我在 pull_news.sh (省略了变量声明):
dump_table () {
mysqldump --user=${REMOTE_USERNAME} --password=${REMOTE_PASSWORDS} --host=${REMOTE_HOST} --port=${REMOTE_PORT} --single-transaction --lock-tables=false $@
}
pull_news(){
dump_table --set-gtid-purged=OFF --where="INFOCODE IN (SELECT INFOCODE FROM info_an_newsrelation WHERE MKTPOSTFIX = '.OC')" ${REMOTE_DBNAME} info_an_newscontent > ${DUMPFILE}
}
pull_news
后
$ ./pull_news.sh
我有
mysqldump: Got error: 1044: Access denied for user 'user'@'%' to database 'in' when selecting the database
如果我删除 where 子句,问题就消失了,所以在我看来,由于某种未知的原因,shell 只使用了 where 子句的第一个单词,并将第二个单词(the IN
)解析为数据库名称。
然后我把它换成了
--where="\"INFOCODE IN (SELECT INFOCODE FROM info_an_newsrelation WHERE MKTPOSTFIX = '.OC')\""
但它没有用。我现在不知道该怎么办,感谢任何帮助......