本文参考:https://www.cnblogs.com/guanbin-529/p/10993549.html
今天在一次单条数据插入操作时,Navicat客户端右下角提示:查询时间xxxs,即即查询时间多少秒,这个时间是一直增加的,最后定格在:查询时间50.855s。SQL执行结果信息提示如下:
1205 – Lock wait timeout exceeded; try restarting transaction
时间:50.824s
挺好奇这是什么错误,还有一个是两者的时间竟然不一样。
大意是:锁等待超时;请尝试重新启动事务。
百度以后知道产生这个错误的原因是:后提交的事务等待前面处理的事务释放锁,但是在等待的时候超过了mysql的锁等待时间,就会引发这个异常。
后头想了一下,可能是之前一次执行sql插入的时候报错了,事务未提交,又重新进行插入的时候出现了这个问题。
通过执行sql语句:
select * from information_schema.INNODB_TRX;
得到如下图片:
百度后发现,并没有出现像其他博主所说的trx_state值为“LOCK WAIT”的记录,我这里只有一条记录,而且状态为RUNNING。
此时尝试KILL trx_mysql_thread_id,即执行命令:
KILL 458482
执行成功。
之后再进行操作就ok了。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/2747.html