解除正在死锁的状态有两种方法:
第一种:
- 首先查询是否锁表:SHOW OPEN TABLES WHERE In_use > 0;
- 查询进程,保证拥有超级管理员权限: SHOW PROCESSLIST;
- 杀死进程id(就是上面命令的id列):KILL id;
第二种:
- 查看下在锁的事务 :SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
杀死进程id(就是上面命令的trx_mysql_thread_id列):kill 线程ID
其它关于查看死锁的命令:
1:查看当前的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;2:查看当前锁定的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
3:查看当前等锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
批量杀死进程SQL:
SELECT concat( 'KILL ', id, ';' ) FROM information_schema.PROCESSLIST WHERE USER = 'root' INTO OUTFILE '/tmp/kill.txt';
SOURCE /tmp/kill.txt;