Выполнение команд mysql в скрипте bash, приводящее к ошибкам - PullRequest
0 голосов
/ 06 июля 2011

При запуске скрипта bash, выполняющего команды MySQL, я получаю сообщение об ошибке в этой строке.

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

Ошибка: create_date: команда не найдена

Как и в этой строке:

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

ОШИБКА 1064 (42000) в строке 1: у вас есть ошибка в вашем синтаксисе SQL; проверить руководство, которое соответствует вашему MySQL версия сервера для правильного синтаксиса использовать рядом с 'SET = UNIX_TIMESTAMP () ГДЕ НУЛЬ И НЕ НУЛЬ ' строка 1.

Я считаю, что первая ошибка в том, что я, вероятно, не экранирую кавычки?

1 Ответ

4 голосов
/ 07 июля 2011

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\`";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...