MySQL:"超出了锁定等待超时"
时间:2020-03-05 18:53:58 来源:igfitidea点击:
我正在尝试从MySQL 5.0.45数据库中删除几行:
delete from bundle_inclusions;
客户端工作了一段时间,然后返回错误:
Lock wait timeout exceeded; try restarting transaction
可能有一些未提交的事务在此表上具有锁,但是我需要此过程来胜过任何此类锁。如何打破MySQL中的锁?
解决方案
回答
猜测:截断表bundle_inclusions
回答
我同意埃里克; TRUNCATE TABLE是必经之路。但是,如果由于某种原因不能使用它(例如,如果我们确实不想删除表中的每一行),则可以尝试以下选项:
- 批量删除行(例如,从?和?之间的ID为bundle_inclusions的DELETE中删除)
- 如果它是MyISAM表(实际上,它也可以与InnoDB一起使用),请尝试在DELETE之前发出LOCK TABLE。这应确保我们具有独占访问权。
- 如果它是InnoDB表,则在发生超时后,使用SHOW INNODB STATUS。这应该使我们对锁定获取失败的原因有一些了解。
- 如果我们具有SUPER特权,则可以尝试使用SHOW PROCESSLIST ALL来查看正在使用该表的其他连接(如果有),然后使用KILL摆脱与之竞争的连接。
我相信还有很多其他可能性。我希望这些帮助之一。