mysql的一些配置解决 Lock wait timeout exceeded; try restarting transaction

innodb_rollback_on_timeout:默认是off,当为off时,事务如果超时,只会回滚最后条sql  当为on时会回滚事务的所有sql

innodb_lock_wait_timeout: 事务超时时间默认是50s,可以改大点

查询事务相关的sql:

select * from information_schema.INNODB_TRX;
select * from information_schema.INNODB_LOCKS;
select * from information_schema.INNODB_LOCK_WAITS;

 

查询变量相关:

show VARIABLES like "innodb_lock_wait_timeout"

 

 

当项目经常报这个  Lock wait timeout exceeded; try restarting transaction这个错时,查询select * from information_schema.INNODB_TRX;发现有些事务一直在运行中,几分钟甚至几个小时都还在运行,此时可能是代码写的有问题,

工作中遇到一个场景,在一个事务里,需要调用第三方http请求,然后该http请求没设置超时时间,结果,某些时刻,执行到这里时,就会一直卡住,事务就一直没法释放,然后导致事务超时报错

posted @ 2023-03-09 15:12  yangxiaohui227  阅读(138)  评论(0编辑  收藏  举报