【问题标题】:MySQL error: Lock wait timeout exceeded; try restarting transactionMySQL错误:超过锁定等待超时;尝试重启事务
【发布时间】:2015-05-05 17:39:11
【问题描述】:

我们有一个在早上 5:15 运行的脚本,它从 36 个远程站点检索数据。每个站点运行一个单独的脚本实例,因此所有 36 个站点同时运行。数据范围从 400K 到 1MB。

当数据来自远程站点时,脚本会尝试删除 MySQL 数据库中相同日期和站点 ID 的行,然后插入新数据。我们经常收到此错误:

超过锁定等待超时;尝试重启事务mysql

当它试图删除旧行时。有时脚本只是停止响应而没有错误消息。

该错误是否意味着由于表被锁定而无法删除或插入数据?

我们如何解决这个问题?

有没有办法让删除/插入 SQL 排队等待表解锁?

我们还有许多其他脚本可以插入来自所有 36 个站点的数据,但我们只有 2 个脚本出现此错误。这两个脚本碰巧带回的数据比任何其他脚本都多。

【问题讨论】:

    标签: php mysql locking


    【解决方案1】:

    这并不是我所希望的答案,但我有一个解决方法。当 PHP 尝试删除/插入数据到 MySQL 时,它会检查返回值以查看是否有任何错误。如果发现锁定等待错误,它将重试最多 10 分钟以插入数据。由于进行了此更改,因此似乎已解决了该问题。顺便说一句,我们对所有事情都使用 PDO。

    【讨论】:

      猜你喜欢
      • 2014-09-05
      • 2018-10-09
      • 2021-01-12
      • 2015-09-27
      • 2019-03-11
      • 2013-02-05
      • 1970-01-01
      • 1970-01-01
      • 2019-06-02
      相关资源
      最近更新 更多