查找被锁定的表
使用 SHOW OPEN TABLES 查看锁表:
SHOW OPEN TABLES [{FROM | IN} db_name] [LIKE 'pattern' | WHERE expr]
In_user
表示是否锁表。每个锁表请求都会导致该字段加壹。首个锁表请求会将该字段设置为壹,后续锁表请求会导致该字段增加,但是锁表动作会被阻塞。
为 0 表示未锁表。每当要锁表时,该字段增加 1,后续的锁表请求会被阻塞
为 1 表示被锁表。
为 N (N>1) 表示有壹个初始锁与N-1 个被阻塞的锁。
Name_locked
指示表名是否锁定(比如 DROP 或 REANME 请求)
查看 InnoDB 状态
SHOW ENGINE INNODB STATUS;
第二步、结束锁定表的查询
show PROCESSLIST;
KILL 123353 ;
参考文献
MySQL : Identify Locked Tables
MySQL :: MySQL 8.4 Reference Manual :: 15.7.7.24 SHOW OPEN TABLES Statement
transactions – How to detect deadlocks in Mysql / innodb? – Stack Overflow