今日收到异常提报,一个报表数据未跑出来。排查发现:一个排程运行失败,报错Lock wait timeout exceeded; try restarting transaction,
因报表数据使用的数据库是mysql,经过网络资源search和同事帮忙解决。
排查思路:
找到被lock住的语句,然后释放锁。
用到的语句如下:
use information_schema;
desc innodb_trx;
select * from inforamtion_schema.innodb_trx where trx_state='LOCK_WAIT'; --查出当前被锁的sql语句事务
kill trx_id -- kill 当前执行的线程序号;
select * from information_schema.processlist where id ='' --id为trx
解决办法:
- 找到my.cnf的位置
- 添加参数 innodb_lock_wait_timeout=100(默认是50,单位s)
- 重启mysql服务;
感谢分享:
https://blog.youkuaiyun.com/java__project/article/details/100137526
本文记录了一次处理MySQL数据库中Lockwaittimeoutexceeded异常的过程。通过排查,定位到被锁住的SQL语句,并提供了释放锁的具体操作步骤。同时,介绍了如何调整my.cnf配置文件中的innodb_lock_wait_timeout参数,以避免类似问题再次发生。
2389

被折叠的 条评论
为什么被折叠?



