本文参考:www.cnblogs.com/guanbin-529…
今天在一次单条数据插入操作时,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了。