“锁定等待超时超出”,流程列表中没有进程

时间:2011-10-13 09:57:46

标签: mysql locking

我在尝试使用合理限制执行一些删除时遇到了下一个错误:

query=(DELETE FROM `A` WHERE `id` < 123456 LIMIT 1000)

exception=(1205, 'Lock wait timeout exceeded; try restarting transaction')

mysql> SHOW OPEN TABLES like 'A';
+----------+----------------------+--------+-------------+
| Database | Table                | In_use | Name_locked |
+----------+----------------------+--------+-------------+
| D        | A                    |      3 |           0 |
+----------+----------------------+--------+-------------+
1 row in set (0.22 sec)

我看到哪里可能是死锁,但show full processlist仅输出自己。在哪里挖掘?

InnoDB,MySQL 5.5

2 个答案:

答案 0 :(得分:2)

这意味着应该提交一个事务。检查可能与此表一起使用的其他会话或其他应用程序。

答案 1 :(得分:0)

SELECT之后也可能有未闭合的交易。我已经解决了(我希望)这样的情况,在单独的(不是一些transaciotn部分)SELECT之后添加提交/回滚。

这个想法对我来说很奇怪,所以在我尝试之前我花了一些时间来尝试其他尝试。它有所帮助。