ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

解决com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Lock wait timeout exceeded; try

2022-05-19 14:31:37  阅读:220  来源: 互联网

标签:MySQLTransactionRollbackException jdbc jdbc4 --- trx innodb mysql com


问题:

com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred while applying a parameter map.
--- Check the ErpAfterSale.updateById-InlineParameterMap.
--- Check the statement (update failed).
--- Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction

以上错误,导致大部分表后续无法更新,代码DLL操作进入排队,获取表(行)锁超时,导致SQL操作无效。

 

解决办法如下:

查询如下三张表:

select * from information_schema.innodb_trx;
select * from information_schema.innodb_locks;
select * from information_schema.innodb_lock_waits ;

 

1、从innodb_trx表找到trx_state一直处于“RUNNING”的记录,如图:

 

 

2、那么,怎么判断一直处于RUNNING呢?

(1)根据innodb_trx表的trx_started的时间值判断,距离当前时间越久,说明当前事务“阻塞”的越久。

(2)查询innodb_locks、innodb_lock_waits表,一般可以判断出那条“阻塞”事务的id--trx_id。

 

3、通过trx_id的从innodb_trx找到该事务对应的trx_mysql_thread_id,进入数据库所在服务器终端,kill -9 xx杀掉该进程。

 

通过以上步骤,最后数据的一切操作终于回归正常~

 

这是本人在生产过程中实际遇到的问题,并得到了解决,但具体产生的原因还未排查出来,希望各位大佬能给出产生的原因及规避的办法。

标签:MySQLTransactionRollbackException,jdbc,jdbc4,---,trx,innodb,mysql,com
来源: https://www.cnblogs.com/flying2me/p/16288353.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有