解决mysql表不能查询修改删除等操作并出现卡死

时间:2024-07-12 21:36:02

问题现象1:进程wait卡住

测试环境mysql出现了一个怪表:select查询表卡死,alter修改表卡死,甚至我不想要这个表了,delete、truncate、drop表都卡死卡主了......

解决办法

>show full processlist;    // 列出进程,找出处于waiting的process,要杀死这些process
......
......
>kill ID;            // ID号就是指的列出的第一列“Id”

到此,可以解决一般性的卡死。(如果必要,考虑重启一下mysql)

问题现象2:删除表报错ERROR 1051 (42S02): Unknown table ‘xxx’

表删除不掉,mysql也重启了,而且drop表的时候出现ERROR 1051 (42S02): Unknown table......

mysql> drop table db_A.tbl_aaa;
ERROR 1051 (42S02): Unknown table 'db_A.tbl_aaa'

解决办法

方法①:修复表,使之正常后,再将其删除(推荐)

[root@server-1 ~]# mysqlcheck --auto-repair --database db_A --user=root --password
Warning: Using unique option prefix database instead of databases is deprecated and will be removed in a future release. Please use the full name instead.
Enter password:
db_A.tbl_aaa OK
db_A.tbl_bbb OK
db_A.tbl_ccc OK
db_A.tbl_ddd OK
db_A.tbl_eee OK
db_A.tbl_fff OK

再次登录mysql执行

mysql> use db_A;
Database changed
mysql> drop table tbl_aaa;
Query OK, 0 rows affected (0.01 sec)

方法②:进数据存放目录直接删除相应的表文件

mysql默认数据存放目录: /var/lib/mysql/

~]# cd /var/lib/mysql/db_A/
db_A ]# rm -f tbl_aaa.frm
db_A ]# rm -f tbl_aaa.ibd

然后再次连接mysql,db_A库中的tbl_aaa表就不见了。

结束.