gpt4 book ai didi

mysql - 当非空结果集时,MySQL 可以给出非零返回码吗?

转载 作者:行者123 更新时间:2023-11-28 23:30:34 25 4
gpt4 key购买 nike

我正在使用 Linux 和 MySQL 5.6

我是这样运行mysql的:

mysql --user=XXX --password=XXX < myfile.sql

这里是myfile.sql的内容

select * from account where balance < 0

我想做的是:

当至少有一个账户余额为负数时,给出非零返回码。

然后我的脚本可以像这样检查这种情况:

mysql --user=XXX --password=XXX < myfile.sql
if [[ $? -gt 0 ]]
then
echo ERROR: Negative balance
fi

我能做到吗?

或者,是否有任何替代方法?

2016-05-28更新:

实际上,我的真实情况很复杂。我用这个简单的例子是为了方便表达我的问题。

其实shell脚本函数中有没有类似[return]这样的语句,让我可以根据不同的情况给出不同的返回码?

对于下面接受的答案,看起来 MySQL 无法生成自定义返回码。将计数 (*) 作为输出显示的最后一行似乎是一种替代方法。

最佳答案

更改您的 SQL 以计算行数,而不是返回数据:

select COUNT(*) as total from account where balance < 0

然后捕获结果行数据的输出(而不是 $? 中返回的结果代码,这只是查询执行的成功),跳过第一行(列别名“总计”)与 sed,然后第二行是您的行数。

out=$(/opt/local/lib/mysql5/bin/mysql --user=XXX --password=XXX < myfile.sql | sed -n 2p)
if [[ $out -gt 0 ]]
then
echo ERROR: Negative balance
fi

我在 MacOSX 上测试过这个,不是在 Linux 上,但原理应该是一样的。

(当然,您不会将数据库密码嵌入到源代码中,对吧!)

关于mysql - 当非空结果集时,MySQL 可以给出非零返回码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37457202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com