Mysql innodb\u锁定\u等待\u超时何时被忽略?
我遇到了一个奇怪的经典死锁异常: 原因:java.sql.BatchUpdateException:尝试获取锁时发现死锁;尝试重新启动事务 代码已被识别,实际上,可能会出现死锁。问题是我马上就得到了例外。我已经将Mysql innodb\u锁定\u等待\u超时何时被忽略?,mysql,hibernate,spring,deadlock,Mysql,Hibernate,Spring,Deadlock,我遇到了一个奇怪的经典死锁异常: 原因:java.sql.BatchUpdateException:尝试获取锁时发现死锁;尝试重新启动事务 代码已被识别,实际上,可能会出现死锁。问题是我马上就得到了例外。我已经将innodb\u lock\u wait\u timeout变量设置为1小时(3600)。但是,例外情况马上就会出现 到底发生了什么?您遇到了死锁锁等待超时变量是查询在超时之前等待获取锁的时间-不是同一回事 从手册中: InnoDB事务在放弃前可能等待行锁定的超时(以秒为单位)。默认值为
innodb\u lock\u wait\u timeout
变量设置为1小时(3600)。但是,例外情况马上就会出现
到底发生了什么?您遇到了死锁锁等待超时变量是查询在超时之前等待获取锁的时间-不是同一回事 从手册中: InnoDB事务在放弃前可能等待行锁定的超时(以秒为单位)。默认值为50秒。尝试访问被另一个InnoDB事务锁定的行的事务在发出以下错误之前最多会挂起几秒钟: 如果你在超时,你会看到这个。您有一个需要修复的适当死锁。 错误1205(HY000):超过锁定等待超时;尝试重新启动事务 启用innodb_deadlock_deadlock_detect时,锁等待超时值不适用于死锁(默认值)
也许MySQL已经足够聪明,可以识别循环死锁,而不必等待超时。但愿不会。:-)是否可以在运行时覆盖超时?是否有任何方法检查lock_wait_timeout的有效值?若要查看当前值,请运行
show全局变量,如“%wait_timeout”代码>