执行mysql查询后捕获退出代码

时间:2014-01-09 16:01:39

标签: mysql bash shell batch-file error-handling

我正在研究一个会查询mysql的bash脚本。我想添加一些错误检查。假设由于某种原因导致以下查询失败,我想捕获退出错误并退出脚本。例如,这是我脚本的一部分。

QUERY="SELECT DISTINCT `TABLE_SCHEMA`, `TABLE_NAME`
FROM `information_schema`.`TABLES`
WHERE  table_schema NOT IN ( 'mysql', 'information_schema', 'performance_schema' )"    

mysql -u user -pPASSWD --batch -N -e "$QUERY" | while read DATABASE TABLE;
do
  ...
  ...
  ...
done

如何在脚本运行“$ QUERY”后捕获退出代码。我在想这样的事情。但它似乎没有用。

mysql -u user -pPASSWD --batch -N -e "$QUERY" echo $? | while read DATABASE TABLE;

任何想法

1 个答案:

答案 0 :(得分:5)

你的方式很好:$?是要检查的标志:

$ mysql -h mydb <<< "SELECT * FROM MyDB.some_table_that_exists;"
$ echo $?
0

$ mysql -h mydb <<< "SELECT * FROM MyDB.asdfasdfasdf;"
ERROR 1146 (42S02) at line 1: Table 'MyDB.asdfasdfasdf;' doesn't exist
$ echo $?
1

所以你可以做的是执行查询然后:

if [ $? ... ]; then ...