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请求没设置超时时间,结果,某些时刻,执行到这里时,就会一直卡住,事务就一直没法释放,然后导致事务超时报错
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2022-03-09 redis 数据持久化,主从,哨兵等