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请求没设置超时时间,结果,某些时刻,执行到这里时,就会一直卡住,事务就一直没法释放,然后导致事务超时报错