MySQL:1205 Lock wait timeout exceeded; try restarting transaction解决方法
出现原因:一个SQL执行完了,但未commit,也没有rollback就return退出了,后面的SQL想要执行,就是被锁,超时结束。
解决方法三步走:
一:查看当前线程
show full processlist;
二:查看事务表
select * from information_schema.innodb_trx;
在第一步中没有看到正在执行的很慢SQL记录线程,再去查看innodb的事务表INNODB_TRX,看下里面是否有正在锁定的事务线程,看看ID是否在show full processlist里面的sleep线程中,如果是,就证明这个sleep的线程事务一直没有commit或者rollback而是卡住了,我们需要手动kill掉。
三:杀死被锁线程
kill 919;
kill之后,再去执行后面的SQL,就可以执行成功了!
验证
最后再次查看线程及事务表,即可发现被锁的事务线程已经没有啦~~~