and*_*sg3 3 mysql error-handling bash shell batch-file
我正在研究一个将查询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
Run Code Online (Sandbox Code Playgroud)
在脚本运行"$ QUERY"后,我怎么能捕获退出代码.我在想这样的事情.但它似乎没有用.
mysql -u user -pPASSWD --batch -N -e "$QUERY" echo $? | while read DATABASE TABLE;
Run Code Online (Sandbox Code Playgroud)
有任何想法吗
你是好方法:$?是要检查的旗帜:
$ 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
Run Code Online (Sandbox Code Playgroud)
所以你可以做的是执行查询,然后:
if [ $? ... ]; then ...
Run Code Online (Sandbox Code Playgroud)