1

我遇到了无法删除记录的问题。我一直遇到死锁超时问题。

我正在运行一个简单的查询

delete from phone_calls where status =0

过了一会儿我得到这个错误Lock wait timeout exceeded; try restarting transaction

我能做些什么来解决这个问题?我的查询有问题吗?

请注意,如果我添加限制 1000 它可以工作,但没有限制它会陷入死锁。

4

1 回答 1

2

首先,这不是死锁。这是一个简单的锁定等待超时。死锁给出的错误类似于“尝试获取锁时发现死锁”。

其次,其他一些事务仍在运行,并在 phone_calls 中的一个或几行上持有锁,状态 = 0。如果状态不是索引,你实际上是持有一个表锁,两个查询不能这样做同时。删除所有这些行可能需要一段时间,而且您的作业运行得太频繁了。

于 2013-04-10T18:42:38.557 回答