You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL中出现Lock wait timeout exceeded错误时事务会自动回滚吗?

MySQL锁等待超时(ERROR 1205)后的事务回滚机制

当触发ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction错误时,当前事务不会自动回滚,必须手动执行ROLLBACK;语句来完成事务回滚。

关键细节:

  • InnoDB引擎在锁等待超时后,仅会终止当前正在执行的SQL语句,不会主动回滚整个事务。此时事务仍处于活跃状态,未提交的修改会保留在事务上下文里。
  • 如果不手动回滚,后续继续执行事务内的操作或尝试提交,可能引发数据不一致,或是再次触发锁相关错误。

建议操作:

  • 遇到该错误后,优先执行ROLLBACK;清理未提交的事务状态,再排查锁冲突原因(比如长事务、锁粒度不合理等),之后再重新执行业务逻辑。
  • 若需调整锁等待时长,可修改innodb_lock_wait_timeout参数,但这只是临时缓解方案,核心还是优化事务设计,减少锁持有时间。

内容的提问来源于stack exchange,提问作者Super Kai - Kazuya Ito

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 00:41:12