show open tables where in_use > 0
命令可以查询锁表。
in_use 为 1 表示这个表同时被两个用户使用,一个正在用,一个在锁定中。
-- 为md_class表增加个写锁定
lock tables md_class write;
-- 查看锁表
show open tables where in_use > 0;
-- 表解锁
unlock tables;
查看锁表:
特殊情况下的锁定是线程阻塞导致的,查询锁表都查不出来,一直转圈,即使查询出也无法解锁,需要强制杀掉阻塞的线程。
select * from information_schema.innodb_trx;
方法可以查询到有两条阻塞的线程。
通过 kill trx_mysql_thread_id 可以直接把对应的进程杀掉。
例:kill 3886;