【发布时间】:2016-10-06 11:12:31
【问题描述】:
我有一个经常使用几个参数调用的 shell 脚本。它应该构建一个查询并执行该语句。如果发生错误,它应该将单独的参数写入文件,以便可以通过再次调用该脚本来进行错误处理。
一切正常,但
问题是,我捕捉到连接被拒绝错误等,但是如果由于表被锁定而无法执行语句并且我不想等待超时。
我的代码:
...
mysql -u ${username} -p${password} -h ${database} -P ${port} --connect-timeout=1 --skip-reconnect -e "$NQUERY"
mysqlstatus=$?
if [ $mysqlstatus -ne 0 ]; then
echo "[ERROR:QUERY COULD NOT BE EXECUTED:$mysqlstatus: QUERY WRITTEN TO LOG]" >> ${GENLOG}
#echo ${NQUERY} >> ${FQUER}
for i in "$@"; do
ARGS="$ARGS $i|"
done
echo "${ARGS}" >> ${ARGLOG}
else
echo "[OK] $NQUERY" >> ${GENLOG}
fi
...
但是当一个表被锁定时,执行不会被取消,它会像永远一样运行..
它不是我在 mysql 服务器上设置 Max_statement_time_set 或任何东西的解决方案,因为我不是唯一使用 db 的人
【问题讨论】:
标签: mysql linux database bash shell