与我的其他问题相关,我遇到了一个经典死锁异常的奇怪情况:引起:java.sql.BatchUpdateException:尝试获取锁时发现死锁;尝试重新启动事务。 blablalbla ...
识别代码,实际上,可能会出现死锁。问题是我立即得到了例外。我将“innodb_lock_wait_timeout”变量设置为1小时(3600)。但是,例外情况仍然存在。
那么...... g * d的名字是怎么回事?
答案 0 :(得分:3)
你正在遇到一个死锁,lock_wait_timeout变量是一个查询在超时之前等待获取锁的时间 - 不是一回事。
从手册中: 在放弃之前InnoDB事务可能等待行锁定的超时(以秒为单位)。默认值为50秒。尝试访问由另一个InnoDB事务锁定的行的事务将在发出以下错误之前最多挂起这么多秒:
如果你正在超时,你会看到这个。你有一个需要修复的正确死锁。 ERROR 1205(HY000):超出锁定等待超时;尝试重新启动交易
答案 1 :(得分:0)
https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_lock_wait_timeout
<块引用>当启用innodb_deadlock_detect(默认)时,锁等待超时值不适用于死锁