死锁MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction
原创
©著作权归作者所有:来自51CTO博客作者wx64fad51b9ed9b的原创作品,请联系作者获取转载授权,否则将追究法律责任
1、查询是否锁表
show open tables where in_use>0;
2、查询进程
show processlist
查询到相对应的进程,然后kill id
3、查看正在锁的事务:
select * from information_schema.INNODB_LOCKS;
select * from information_schema.INNODB_TRX;
4、查看等待锁的事务 看看ID是否在show processlist里面的sleep线程中,如果是,就证明这个sleep的线程事务一直没有commit或者rollback而是卡住了
select * from information_schema.INNODB_LOCK_WAITS;
SELECT
a.trx_id '事务id',
a.trx_mysqL_thread_id '事务线程id',
a.trx_query '事务SQL'
FROM
information_schema.INNODB_LOCKS b,
information_schema.INNODB_TRX a
WHERE
b.lock_trx_id = a.trx_id;
SELECT
CONCAT('KILL',a.trx_mysqL_thread_id,';')
FROM
information_schema.INNODB_LOCKS b,
information_schema.INNODB_TRX a
WHERE
b.lock_trx_id = a.trx_id;