2013-07-09 120 views
8

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

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

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?这是一个有效的问题。如果不可能说出原因,以便其他人能够看到他们何时遇到这个问题。

+0

因此,您跛行,你得到了低估。我有类似的问题,你的问题是最接近我发现需要一个答案...让我们知道,如果你曾经解决这个问题! –

回答

1

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

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

相关问题