tomcat中抛出异常:
com.mysql.jdbc.exceptions.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting 请问这是什么问题?该如何解决?谢谢......

解决方案 »

  1.   

    检查Connection是否重复关闭。最大可能就是关闭连接后有去执行关闭操作!
      

  2.   

     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锁
    从网上找的哦
      

  3.   

    在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锁