我在尝试使用合理限制执行一些删除时遇到了下一个错误:
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
答案 0 :(得分:2)
这意味着应该提交一个事务。检查可能与此表一起使用的其他会话或其他应用程序。
答案 1 :(得分:0)
SELECT之后也可能有未闭合的交易。我已经解决了(我希望)这样的情况,在单独的(不是一些transaciotn部分)SELECT之后添加提交/回滚。
这个想法对我来说很奇怪,所以在我尝试之前我花了一些时间来尝试其他尝试。它有所帮助。