繁体   English   中英

mysql cmdline客户端将错误返回到外壳脚本

[英]mysql cmdline client to return error to shell script

有没有一种方法可以使mysql cmdline客户端在遇到错误后立即中止,并将非零退出状态返回给控制Shell脚本。

基本上,我希望能够有一个像这样的shell脚本:

mysql -A --batch <<END_SQL
UPDATE table1...
UPDATE table2...
...
END_SQL
if [ $? -ne 0 ]
then
    # Error handling
fi

使用oracle时,我只需要将WHENEVER SQLERROR EXIT FAILURE放在sql命令的顶部。 是否有mysql等效项? 在Google中找不到任何内容。

默认情况下,mysql客户端在遇到错误时确实会退出。

如果使用--force选项,可以使mysql客户端遇到错误时退出。

$ echo "select * from nonexistanttable ; select now()" | mysql test
ERROR 1146 (42S02) at line 1: Table 'test.nonexistanttable' doesn't exist

$ echo $?
1

注意,这不会返回now()的结果。 它先退出。

$ echo "select * from nonexistanttable ; select now()" | mysql --force test
ERROR 1146 (42S02) at line 1: Table 'test.nonexistanttable' doesn't exist
now()
2017-11-12 22:46:30

$ echo $?
0

啊,有。


这个问题与MySQL相反:在导入时忽略错误?

众所周知这是mysql客户端的行为。 唯一的线索就是阅读本手册页中的--force选项: https : //dev.mysql.com/doc/refman/5.7/en/mysql-command-options.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM