误删frm文件导致建表失败

data 目录下只有ibd文件,无frm文件导致建表失败的问题

一、问题描述

想要在wx库建立一张a表,却报表不存在

mysql> show tables;
Empty set (0.00 sec)
mysql> create table a(id int(1));
ERROR 1050 (42S01): Table ‘a’ already exists
mysql>

二、问题分析

发现a表没有frm文件
frm文件是历史问题,服务层需要,和innodb没有关系

[root@dbmssitdb204 wx]# ll
total 104
-rw-rw---- 1 mysql mysql 98304 Jan 4 15:06 a.ibd
-rw-rw---- 1 mysql mysql 61 Jan 4 15:06 db.opt
[root@dbmssitdb204 wx]#

三、问题处理

1、手动编辑一个a.frm文件(非空),切记权限。。。,挺靠谱

[root@dbmssitdb204 wx]# cat a.frm
erererecdfdsfgsdf
[root@dbmssitdb204 wx]# ll
total 108
-rw-rw---- 1 mysql mysql 18 Jan 4 15:11 a.frm
-rw-rw---- 1 mysql mysql 98304 Jan 4 15:06 a.ibd
-rw-rw---- 1 mysql mysql 61 Jan 4 15:06 db.opt
[root@dbmssitdb204 wx]#

进库drop 掉表就可以了。

mysql> show tables;
±-------------+
| Tables_in_wx |
±-------------+
| a |
±-------------+
1 row in set (0.00 sec)
mysql> drop table a;
Query OK, 0 rows affected (0.00 sec)
mysql>

2、如果库不大,可以将库dump出来,再drop database ,然后再将备份导进库里

你可能感兴趣的:(技术)