在bash脚本中运行mysql命令会产生错误

时间:2011-07-06 11:12:31

标签: mysql bash unix

运行执行MySQL命令的bash脚本,我在这一行上收到错误。

$MYSQL_BIN $DATABASE -e \
"ALTER TABLE `nodes` ADD COLUMN `created_date` int(32) AFTER `address`";

错误是 created_date:找不到命令

以及这一行:

$MYSQL_BIN $DATABASE -e \
"UPDATE `nodes` SET `created_date` = UNIX_TIMESTAMP() WHERE `created_date` 
IS NULL AND `address` IS NOT NULL";
  

第1行的错误1064(42000):你有   SQL语法中的错误;检查   与您的MySQL对应的手册   用于正确语法的服务器版本   在'SET = UNIX_TIMESTAMP()附近使用   在哪里是空的并且不是空的'   第1行。

我认为第一个错误是因为我可能没有逃避引用?

1 个答案:

答案 0 :(得分:4)

Bash使用bactick运算符(`)来表示命令替换,即将一个命令的标准输出替换为定义另一个命令的文本行。

所以你应该使用单引号而不是双引号或正确地转义反引号:

$MYSQL_BIN $DATABASE -e 
'ALTER TABLE `nodes` ADD COLUMN `created_date` int(32) AFTER `address`';

$MYSQL_BIN $DATABASE -e 
"ALTER TABLE \`nodes\` ADD COLUMN \`created_date\` int(32) AFTER \`address\`";