问题:
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杀掉该进程。
通过以上步骤,最后数据的一切操作终于回归正常~
这是本人在生产过程中实际遇到的问题,并得到了解决,但具体产生的原因还未排查出来,希望各位大佬能给出产生的原因及规避的办法。
本文来自博客园,作者:苟活之刍,转载请注明原文链接:https://www.cnblogs.com/flying2me/p/16288353.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报