运行执行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行。
我认为第一个错误是因为我可能没有逃避引用?
答案 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\`";