从命令行将MySQL变量传递给脚本

jos*_*erk 7 mysql command-line command-line-arguments

我有一个MySQL更新脚本我想从命令行运行,但我希望能够将一个阶段域变量传递给脚本.

我知道这不起作用,但这是我描述我想要做的最好的方式:

$ -uroot -hlocalhost mydatabase  --execute "SET @domain = 'mydomain.dev' " < ./sql/update_domain.sql
Run Code Online (Sandbox Code Playgroud)

在脚本内部,我使用@domain变量来更新配置表中的一些配置变量,使用如下命令:

UPDATE my_cfg SET value = @domain WHERE name = 'DOMAIN';
Run Code Online (Sandbox Code Playgroud)

基本上我想在update_domain.sql文件中为SET @domain添加前缀.

我有什么想法可以纠正我的做法?

L. *_*ana 11

在您的BATCH文件中:

mysql -e "set @domain=PARAMVALUE;source ./sql/update_domain.sql"
Run Code Online (Sandbox Code Playgroud)

在你的SQL文件中:

UPDATE my_cfg SET value = @domain WHERE name = 'DOMAIN';
Run Code Online (Sandbox Code Playgroud)