mysqldump命令在直接输入命令行时有效 - 但不在shell脚本中

时间:2011-12-31 08:15:36

标签: mysql shell centos mysqldump

我刚开始使用shell脚本来节省我一遍又一遍地输入相同的命令。此命令用于将数据库复制到从属服务器,作为设置MySQL数据库复制的一部分。

直接输入命令提示符时可以正常工作:

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

USER,PASSWORD和database_name都将替换为真实脚本中的实际值。

当我在scripts.sh文件中输入此命令时,给它执行权限,然后使用./scripts.sh运行它我得到:

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

可能导致此错误的原因是什么?当它包含在shell脚本中时,我是否需要以某种方式修改命令?

1 个答案:

答案 0 :(得分:2)

您的数据库名称所在的变量最后有一个CR。您可能需要通过dos2unix运行脚本,或者如果您从外部源获取数据库名称,请使用此站点上的某个解决方案从数据中删除CR。