'RROR 1102(42000):数据库名称'数据库名称不正确

时间:2017-04-07 08:46:23

标签: mysql shell ubuntu

我有一个sh脚本,包含以下内容:

#!/bin/sh
mysqldump -hmy.host.com --user=p387829 --password=pwd --
all-databases > /backup/mysqlall-`/bin/date +\%Y\%m\%d\%h\%i\%s`.sql

mysqldump -u p387829 -hmy.host.com --password=pwd --add-
drop-table --no-data usr_p387829_1 | grep ^DROP | mysql -up387829 -
pPwd -hmy.host.com usr_p387829_1

mysqldump -u p387829 -hmy.host.com --password=pwd 
usr_p387829_2 | mysql -u p387829 -pPwd -hmy.host.com 
usr_p387829_1

当我在shell中单独执行每个命令时,它可以工作。但是当我执行 sh script.sh

Warning: Using a password on the command line interface can be insecure.
Warning: Using a password on the command line interface can be insecure.
Warning: Using a password on the command line interface can be insecure.
'RROR 1102 (42000): Incorrect database name 'usr_p387829_1
Warning: Using a password on the command line interface can be insecure.
Warning: Using a password on the command line interface can be insecure.
'RROR 1102 (42000): Incorrect database name 'usr_p387829_1
mysqldump: Got errno 32 on write

2 个答案:

答案 0 :(得分:1)

参加聚会有点晚了,但是Google将我带到了这里。也许会帮助某人。

bash(可能还有其他Linux shell)不喜欢CRLF,请确保使用LF换行符保存文件。那对我有用。

答案 1 :(得分:0)

我无法解释为什么会发生这种情况,我得到了同样的错误,但我通过将密码开关放在行尾来解决问题:

mysql -r username 'database_name' -p'password'

它对我有用