本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告
  • 首页
  • MySQL
  • 【MySQL故障解决】ERROR 1205 (HY000): Lock wait timeout exceeded的解决办法

【MySQL故障解决】ERROR 1205 (HY000): Lock wait timeout exceeded的解决办法

发布:TangLu2018-10-17 9:20分类: MySQL 标签: mysql

今天使用SQLyog给同事执行一个SQL等待了非常长的时间都没有完毕,由于赶着处理其他东西,同事让我终止掉之前的SQL后重新提交了一些经过优化的SQL,可是执行过程中发现出现“ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction”的错误提示,意思是说锁超时。一开始想着是语句太多,可是精简之后还是出现这样的提示,可以判断跟语句无关了,使用show full processlist也不能方便的定位出是什么语句导致被锁,后来查资料发现可以通过information_schema库中的三个表来查找被锁住的语句:

innodb_trx表可以查询当前运行的所有事务

innodb_locks表可以查询当前出现的锁

innodb_lock_waits表可以查询锁等待的对应关系

知道如何查询就好办了,再次执行正常的SQL语句,然后查询表中内容

SELECT * FROM information_schema.innodb_trx \G


果然看到了状态是Locking,而导致锁的原因就是最开始那条被中断的语句没有正常结束,也找到了其ID号

企业微信截图_20181017090837.png

找到ID号就好办了,在MySQL命令行中将其kill即可,需要注意的是kill的是线程trx_mysql_thread_id而不是trx_id

mysql > kill 386014769


再次执行语句,恢复正常

温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《【MySQL故障解决】ERROR 1205 (HY000): Lock wait timeout exceeded的解决办法
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-454.html  [生成短网址]

已有 0/3219 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~