13

我的代码有点乱,我不确定问题出在哪里,但是我在没有使用任何事务或表锁定的情况下遇到了死锁。任何有关此的信息都会有所帮助。

我查看了死锁,似乎导致它们的唯一方法是使用事务。

Error Number: 1213
Deadlock found when trying to get lock; try restarting transaction
UPDATE `x__cf_request` SET `contact_success` = 1, `se_engine_id` = 0, `is_fresh` = 1 WHERE `id` =  '28488'

编辑:为什么要投反对票?这是一个有效的问题。如果不可能,只需说出原因,以便其他人在遇到此问题时可以看到。

4

1 回答 1

2

在 InnoDB 中,每条语句都在一个事务中运行;BEGIN和 autocommit=0 用于多语句事务。话虽如此,死锁发生在不同的事务之间。

看来您在该字段上没有索引id,或者多条记录具有相同的id. 如果没有,那么您有一个索引间隙锁定到位。要进一步诊断,您需要提供以下输出SHOW ENGINE InnoDB STATUS

于 2013-07-14T16:32:53.250 回答