posts - 4,comments - 0,views - 7574

问题:

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杀掉该进程。

 

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

 

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

posted on   苟活之刍  阅读(2804)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示