Lock wait timeout exceeded

在做修改语句的时候,数据库抛出Lock wait timeout exceeded; try restarting transaction这样的异常,提示错误的意思很明显,是因为这条语句被锁住了,所以释放这个锁。

解决方案:

1.通过sql:   SELECT * FROM information_schema.INNODB_TRX  来查看当前所运行的所有事务,通过查询表,发现有一条事务记录一直处于RUNNING的状态

2.再次通过sql:SELECT * FROM information_schema.`PROCESSLIST` WHERE id = "trx_mysql_thread_id",”trx_mysql_thread_id“为 INNODB_TRX 表中的字段,通过PROCESSLIST来查找被锁的语句,PROCESSLIST这张表保存了MySql服务器所有数据库的信息,如数据库名,数据库的表,表栏的数据类型与访问权限等。

3.排查出问题所在后,即可在数据库控制台通过 KILL ID  命令杀死这条事务线程,应用就能恢复正常,ID 为 PROCESSLIST 表中的ID字段

出现这种情况的原因:手动开启事务后未提交,发生异常时未回滚,就会导致事务一直处于RUNNING状态,其他事务无法获取锁而等待超时。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值