我的代码有点乱,我不确定问题出在哪里,但在没有使用任何事务或表锁定的情况下,我会出现死锁。任何有关这方面的信息都会有所帮助。
我已经查找了死锁,导致死锁的唯一方法似乎是使用事务。
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'
编辑:为什么投反对票?这是一个合理的问题。如果不可能,只需说出原因,这样其他人就可以看到他们遇到这个问题的时候。
在InnoDB中,每条语句都在事务中运行;CCD_ 1和autocommit=0用于多语句事务。话虽如此,死锁发生在不同的事务之间。
似乎在id
字段上没有索引,或者多个记录具有相同的id
。如果没有,那么就有一个索引间隙锁定到位。要进一步诊断,您需要提供SHOW ENGINE InnoDB STATUS
的输出