如果您使用的是InnoDB或任何行级事务性RDBMS,则即使在完全正常的情况下, 写入事务也可能导致死锁。较大的表,较大的写入和较长的事务块通常会增加发生死锁的可能性。在您的情况下,可能是这些因素的组合。
真正处理死锁的唯一方法是编写代码以期望它们。如果您的数据库代码编写得很好,通常这并不是很难。通常,您可以放一个try/catch
查询执行逻辑,并在发生错误时查找死锁。如果您发现其中一个,那么正常的事情就是尝试再次执行失败的查询。
解决MySQL错误“尝试获取锁定时发现死锁;尝试重新开始交易”
如果您使用的是InnoDB或任何行级事务性RDBMS,则即使在完全正常的情况下, 写入事务也可能导致死锁。较大的表,较大的写入和较长的事务块通常会增加发生死锁的可能性。在您的情况下,可能是这些因素的组合。
真正处理死锁的唯一方法是编写代码以期望它们。如果您的数据库代码编写得很好,通常这并不是很难。通常,您可以放一个try/catch
查询执行逻辑,并在发生错误时查找死锁。如果您发现其中一个,那么正常的事情就是尝试再次执行失败的查询。