innodb_lock_wait_timeout何时被忽略?

时间:2010-09-20 13:37:35

标签: mysql hibernate spring deadlock

与我的其他问题相关,我遇到了一个经典死锁异常的奇怪情况:引起:java.sql.BatchUpdateException:尝试获取锁时发现死锁;尝试重新启动事务。 blablalbla ...

识别代码,实际上,可能会出现死锁。问题是我立即得到了例外。我将“innodb_lock_wait_timeout”变量设置为1小时(3600)。但是,例外情况仍然存在。

那么...... g * d的名字是怎么回事?

2 个答案:

答案 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(默认)时,锁等待超时值不适用于死锁