今日收到异常提报,一个报表数据未跑出来。排查发现:一个排程运行失败,报错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.csdn.net/java__project/article/details/100137526