首页 > 解决方案 > 如何强制 mysql 客户端中的一个很长的脚本在出错时快速退出而不挂起几个小时

问题描述

我有一个很长的 SQL 脚本,大约有 250,000 次更新。

我通过管道将它传输到 linux 中的 mysql 客户端来运行它。现在我遇到了三次由脚本生成方式引起的 SQL 错误。

cat updates.sql | mysql -h kkwea1sprageyxq.poopopakte0b2.pu-west-1.rds.amazonaws.com \
    -u mama_ --disable-reconnect --max-allowed-packet=536M \
    --default-character-set=cp1250 --skip-column-names -D mydb > update.log

当出现错误时,mysql 客户端似乎会挂起,通常会持续数小时,然后才会自行出错。

我可以将其设置为忽略错误,但我想知道是否可以在 mysql 客户端的命令行中添加一个标志,以使其在 SQL 错误后更快地出错。

我可以看到几个可能有趣的 mysql 命令行标志,但我发现它们的描述模棱两可。

我的脚本以关闭自动提交模式运行,COMMIT每 25 个更新命令执行一次语句。我有预感,当我使用自动提交模式打开时,它出错的速度要快得多,如果出现错误,这显然是可取的。

以下是更新语句的示例,以防有帮助:

UPDATE data SET value = 0.9234 WHERE fId = 47616 AND modDate = '2018-09-24'  AND valueDate = '2007-09-01'  AND last_updated < '2018-10-01';

标签: mysql

解决方案


推荐阅读