我需要禁止mysql命令打印到标准输出的所有错误消息。我看到了许多其他类似的问题,但所有的答案都建议了避免这些消息的变通方法(在执行查询之前检查数据库/表/列是否存在)。但我需要mysql命令在出错时返回失败退出代码,并且除了成功运行的查询中显式请求的数据外,不输出任何内容。-s键对隐藏错误消息没有帮助。
我的任务是在脚本中执行MySQL查询,并获得所请求的数据(用-s键打印)或非零退出代码。我不想在执行目标查询之前检查每个表/列/等的存在。我如何才能做到这一点?
UPD:我试过了,但没有用:
mysql ... db -s -N -e "SELECT config_id FROM core_config_data LIMIT 1;" 2> /dev/null发布于 2021-07-21 11:13:43
总结一下:
您希望mysql命令执行以下操作:
(当查询失败时,不会打印任何错误并退出并显示不成功代码)
那我有个好消息要告诉你!错误的输出将始终在stderr上。因此,您只需将输出重定向到null或您喜欢的任何位置。
root@icarus ~/so # mariadb -Dmaio290sql1 -e 'SELECT * FROM wp_users' -s 2> bla.txt
[actual content]
root@icarus ~/so # echo $?
0
root@icarus ~/so # mariadb -Dmaio290sql1 -e 'SELECT * FROM nope' -s 2> bla.txt
root@icarus ~/so # echo $?
1最后一个查询抛出了一个错误,因此退出代码不是0。不过,这是在MariaDB上测试的:10.3.27-MariaDB-0+deb10u1 Debian 10。
https://stackoverflow.com/questions/68463224
复制相似问题