没有交易怎么可能有死锁?

时间:2013-07-09 15:21:40

标签: mysql transactions innodb deadlock

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

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

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'

编辑:为什么downvotes?这是一个有效的问题。如果不可能只说出原因,那么其他人就可以看到他们遇到这个问题。

1 个答案:

答案 0 :(得分:1)

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

您似乎没有id字段的索引,或者多个记录具有相同的id。如果没有,那么就比你有一个索引间隙锁定。要进一步诊断,您需要提供SHOW ENGINE InnoDB STATUS

的输出