Команда mysqldump работает при вводе непосредственно в командной строке, но не в сценарии оболочки - PullRequest
0 голосов
/ 31 декабря 2011

Я только начинаю работать со скриптами оболочки, чтобы избавить меня от ввода одних и тех же команд снова и снова. Эта команда используется для копирования базы данных на подчиненный сервер как часть настройки репликации базы данных MySQL.

Работает при непосредственном вводе в командной строке:

mysqldump --host=192.168.1.1  –uUSER –pPASSWORD --opt database_name | mysql --host=192.168.1.2 –uUSER –pPASSWORD -C database_name

ПОЛЬЗОВАТЕЛЬ, ПАРОЛЬ и имя_базы_данных все заменены их действительными значениями в реальном скрипте.

Когда я набираю эту команду в файле scripts.sh, даю ей разрешение на выполнение, а затем запускаю ее с ./scripts.sh. Я получаю:

'RROR1102 (42000): Incorrect database name 'database_name
mysqldump: Got errno 32 on write

Что может быть причиной этой ошибки? Нужно ли как-то изменять команду, если она содержится в сценарии оболочки?

1 Ответ

2 голосов
/ 31 декабря 2011

Переменная, в которой находится имя вашей базы данных, имеет CR в конце.Вам может потребоваться запустить сценарий через dos2unix или использовать одно из решений на этом сайте для извлечения CR из данных, если вы получаете имя базы данных из внешнего источника.

...