最近在自测一个项目时,有一张表怎么都删不掉,并且还打不开,很明显是被占用着呢,下面就看一下解决办法:
1.查找当前活跃的事务
SELECT * from information_schema.INNODB_TRX
如果有占用,会查出好多东西,这个一看就明白,没有结果的话,说明没有当前活跃的事务,那就是其他原因导致的。
根据trx_started等判断事务是否异常锁定
2.杀死线程
直接使用命令:
Kill id(上面查询出来的trx_mysql_thread_id)
然后再对需要处理的表进行增删改查就OK了。
顺便分享一个判断某个库存不存在某个表的SQL:
select
t.table_name
from information_schema.TABLES t
where t.TABLE_SCHEMA =“database_name”
and t.TABLE_NAME =“table_name”
返回的是表名, information_schema.TABLES这个表里有很多信息,大家可以自行查看