我遇到了无法删除记录的问题。我一直遇到死锁超时问题。如何避免mysql死锁?
我运行一个简单的查询
delete from phone_calls where status =0
一段时间后,我得到这个错误Lock wait timeout exceeded; try restarting transaction
我能做些什么来解决这个问题?我的查询有一些错误吗?
请注意,如果我添加了限制1000,但是没有限制,它会运行到死锁。
我遇到了无法删除记录的问题。我一直遇到死锁超时问题。如何避免mysql死锁?
我运行一个简单的查询
delete from phone_calls where status =0
一段时间后,我得到这个错误Lock wait timeout exceeded; try restarting transaction
我能做些什么来解决这个问题?我的查询有一些错误吗?
请注意,如果我添加了限制1000,但是没有限制,它会运行到死锁。
首先,这不是死锁。这是一个简单的锁定等待超时。死锁给出的错误就像“试图锁定时发现的死锁”。
其次,其他一些事务仍在运行,并且在status = 0时在phone_calls中的一个或多个行上持有锁。如果status不是索引,则有效地持有表锁并且两个查询可以'不要在同一时间做这个。删除所有这些行可能需要一段时间,而且您的作业运行频繁。
感谢您提供此信息。是的,当我做了一个限制它执行它。谢谢 ) – Mike 2013-04-10 18:50:53
您使用的是交易吗? – karthikr 2013-04-10 18:36:58
您的交易意味着什么? – Mike 2013-04-10 18:37:53
听起来像另一个并发查询或事务处理已锁定该表(或表中的某些行)。 – cdhowie 2013-04-10 18:38:17