MySQL错误:超过锁定等待超时;尝试重新启动事务

时间:2015-05-05 17:39:11

标签: php mysql locking

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

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

  

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

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

错误是否意味着它无法删除或插入数据,因为表已被锁定?

我们如何解决这个问题?

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

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

1 个答案:

答案 0 :(得分:0)

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