Mysql Lock wait timeout exceeded 处理方法
1、一个问题
今天在做项目的时候突然遇到了下面的问题
怎么回事,之前这个接口一直都正常的啊。从报错结果来看,应该是数据库出问题了。
执行一下这条更新语句,发现数据库的锁连接超时
2、解决方案
-- 当前运行的所有事务
SELECT * FROM information_schema.INNODB_TRX;
执行一下上面的语句,结果如下(超时的事务已经被我kill了,所以没有数据)
看事务表INNODB_TRX里面是否有正在锁定的事务线程,如果有锁定的事务,找到他的trx_mysql_thread_id,
-- 查看数据库当前的进程
show processlist;
去数据库当前进程中有没有这个id,如果存在,就证明这个sleep的线程事务一直没有commit或者rollback而是卡住了,我们需要手动kill掉。
-- kill 命令(kill 加上 id值)
kill id
这时候发现更新正常