当前位置: 代码迷 >> Java Web开发 >> tomcat 中抛异com.mysql.jdbc.exceptions.MySQLTransactionRollbackException,该如何处理
  详细解决方案

tomcat 中抛异com.mysql.jdbc.exceptions.MySQLTransactionRollbackException,该如何处理

热度:7463   发布时间:2013-02-25 21:19:58.0
tomcat 中抛异com.mysql.jdbc.exceptions.MySQLTransactionRollbackException
tomcat中抛出异常:
com.mysql.jdbc.exceptions.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting

请问这是什么问题?该如何解决?谢谢......

------解决方案--------------------------------------------------------
检查Connection是否重复关闭。最大可能就是关闭连接后有去执行关闭操作!
------解决方案--------------------------------------------------------
Deadlock found when trying to get lock;

,在InnoDB引擎上,当同一条记录上的锁深度(个数)超过LOCK_MAX_DEPTH_IN_DEADLOCK_CHECK(代码中这个常量值为200)或锁开销大于LOCK_MAX_N_STEPS_IN_DEADLOCK_CHECK(代码中这个常量值为1000000)时,MySQL会给出“TOO DEEP OR LONG SEARCH IN THE LOCK TABLE WAITS-FOR GRAPH”信息,并放弃所有的锁检测,直接报“Deadlock found when trying to get lock”错误

MySQL 5.1.X中,提供了新的锁模式,对于简单的取自增值insert语句,只在获得auto_increment值的时候对自增计数器加上一个轻量级的 X lock,而非表级锁,并且在得到auto_increment值后就立即释放了,而不是等到insert语句执行完才释放
设置 innodb_autoinc_lock_mode=0 沿用表级auto-inc锁
设置 innodb_autoinc_lock_mode=1 使用新的计数器级auto-inc锁


从网上找的哦
------解决方案--------------------------------------------------------
在InnoDB引擎上,当同一条记录上的锁深度(个数)超过LOCK_MAX_DEPTH_IN_DEADLOCK_CHECK(代码中这个常量值为200)或锁开销大于LOCK_MAX_N_STEPS_IN_DEADLOCK_CHECK(代码中这个常量值为1000000)时,MySQL会给出“TOO DEEP OR LONG SEARCH IN THE LOCK TABLE WAITS-FOR GRAPH”信息,并放弃所有的锁检测,直接报“Deadlock found when trying to get lock”错误

MySQL 5.1.X中,提供了新的锁模式,对于简单的取自增值insert语句,只在获得auto_increment值的时候对自增计数器加上一个轻量级的 X lock,而非表级锁,并且在得到auto_increment值后就立即释放了,而不是等到insert语句执行完才释放
设置 innodb_autoinc_lock_mode=0 沿用表级auto-inc锁
设置 innodb_autoinc_lock_mode=1 使用新的计数器级auto-inc锁

------解决方案--------------------------------------------------------
这个还真不知道哦,楼上都从网上找了,应该就是了吧!
  相关解决方案