Bash脚本 - 错误1(HY000) - 从数据库保存表

时间:2014-09-07 17:08:41

标签: mysql database bash shell debian

我必须重新编写一些停止工作的脚本。 有export.sh脚本,它应该从数据库中复制和保存表:

DATAPUMP="/tmp/DataPump/"       # Where tables have to be saved and where the old tables are saved 
TABLELIST="MyShop5TableList"    # Where names of tables are saved
DBSOURCE="somedb"               # DB name
EXPORTDIR="../export/"          # Where copies of tables have to be saved

rm ${DATAPUMP}*.export

for table in `cat ${TABLELIST}`; do
mysql -D ${DBSOURCE} -pPassword << EOF
select * into outfile "${DATAPUMP}${table}.export" from ${table};
EOF
done

cp ${DATAPUMP}* ${EXPORTDIR}

当我尝试运行脚本export.sh时,会出现错误消息:

rm: cannot remove '/tmp/DataPump/*.export': No such file or directory.
ERROR 1 (HY000): Can’t create/write to file "/tmp/DataPump/goods.export"(Errcode: 2)
# *and the same ERROR 1 for all other tables*

所以我尝试将DATAPUMP目录更改为DATAPUMP="tmp/DataPump/"(开头没有“/”)。文件已删除,但仍显示ERROR 1消息(现在稍有不同):

ERROR 1 (HY000): Can’t create/write to file "var/lib/mysql/tmp/DataPump/goods.export"(Errcode: 2)
# *and the same ERROR 1 for all other tables*

文件路径已更改。我是bash脚本的新手,我真的不知道出了什么问题。 PS:脚本工作了很长时间......我们不知道发生了什么

1 个答案:

答案 0 :(得分:0)

我不是100%肯定,但我敢打赌它是权限。尝试选择要写入文件的目录。然后运行脚本。

chown -R foo /some/path

这将根据/ some / path

中的路径目录将所有权改为foo