我需要运行一个每月bash脚本通过cron,是与我们公司的计费系统。这是通过两个存储过程完成的。当我通过MySQL控制台和工作台运行它们时,它们可以正常工作。
我看过this article,这基本上就是我做它的方式。
我通过cron调用,这个shell脚本如下所示:
mysql -h 192.168.1.1 -u<username> -p<password> mydatabase < /path/to/billing_periods.sql包含命令的文本文件如下所示:
call sp_start_billing_period();
call sp_bill_clients();所发生的情况是,第一个查询运行,但第二个查询在第二行,没有运行。
我可以制作一个存储过程来包装这两个-但我只是想知道为什么会发生这种事.也许是我犯了一个错误,或者是你做这件事的方式受到了限制。
我还考虑过这样做(对MySQL shell的两个调用):
mysql -h 192.168.1.1 -u<username> -p<password> mydatabase -e "call sp_start_billing_period();"
mysql -h 192.168.1.1 -u<username> -p<password> mydatabase -e "call sp_bill_clients();"发布于 2015-06-08 19:13:42
您可以尝试用分号分隔每个语句。
mysql -h 192.168.1.1 -u<username> -p<password> mydatabase -e "call sp_start_billing_period();call sp_bill_clients();"如果您将语句保存在文件中,则可以:
while read LINE; do mysql -u<username> -p<password> mydatabase -e"$LINE";echo "-----------";done < statements.sql发布于 2015-06-08 19:02:56
我认为只允许在输入.sql文件中执行一条语句,请参阅语句。
--执行=语句,-e语句执行语句并退出。默认输出格式与-批处理生成的输出格式类似.
-e是隐式的。至少,当我执行不同的mysql查询时,我会将它们放入自己的脚本中,就像您已经建议的那样。
https://stackoverflow.com/questions/30716846
复制相似问题