执行数据删除操作时一直超时并弹出Lock wait timeout exceeded; try restarting transaction错误
解决办法
1.查询数据库线程情况,看是否有执行很慢或阻塞的SQL
SHOW FULL PROCESSLIST;
再去查看innodb的事务表INNODB_TRX,看下里面是否有正在锁定的事务线程,看看ID是否在show full processlist里面的sleep线程中,如果是,就证明这个sleep的线程事务一直没有commit提交,或者rollback回滚,而是卡住了,这时候我们需要手动kill。
SELECT * FROM information_schema.INNODB_TRX;
2.杀死进程
KILL 21517;
注意:MySQL是自动提交事务的(即:autocommit=1),可以使用 show variables like 'autocommit' 或者 select @@autocommit 查看当前数据库是否为自动提交事务;若autocommit的值不是1还可以使用set global autocommit = 1 将自动提交设置为开启。