MySQL 数据库导入sql文件 但导入后只有ibd文件没有frm文件

MySQL 数据库导入sql文件 但导入后只有ibd文件没有frm文件,第1张

先在新的数据库里面建立一个和原来库一样的空数据库,在Mysql的安装目录下找到data目录,你可以看到你刚才建立的数据库名所命名的目录,进入该目录,然后停止mysql,将旧的那一堆frm替换这些目录底下的文件,启动mysql就行了。注意,新mysql的版本要和旧Mysql的版本要一致,否则会出现问题。

一、InnoDB表结构的恢复

1

假定:MYSQL数据库已经崩溃,目前只有对应表的frm文件,大家都知道,frm文件无法通过文本编辑器查看,因为如果不恢复,基本上来说对我们没什么用。这里我们为了测试,假定该文件为test_innodb.frm

该表创建脚本如下:

mysql>create table test_innodb

->(A int(11) default NULL,

->B varchar(30) default NULL,

->C date default NULL) engine=innodb

Query OK, 0 rows affected (0.05 sec)

2

在新的正常工作的MYSQL环境下建立一个数据库,比如aa.

3

在aa数据库下建立同名的数据表test_innodb,表结构随意,这里只有一个id字段, *** 作过程片段如下:

mysql>create table test_innodb (id bigint not null)engine=InnoDB

Query OK, 0 rows affected (0.09 sec)

4

停止mysql服务器,将系统崩溃后留下的test_innodb.frm文件拷贝到新的正常数据库的数据目录aa下,覆盖掉下边同名的frm文件,重新启动MYSQL服务。

END

二. MyISAM表结构的恢复

同样先假定需要恢复的表的FRM文件为test_myisam.frm,表结构为

mysql>create table test_myisam

->(A int(11) default NULL,

->B varchar(30) default NULL,

->C date default NULL) engine=myisam

Query OK, 0 rows affected (0.05 sec)

直接将test_myisam.frm拷贝到正常数据库对应的数据目录下。这时测试

mysql>show tables

+--------------+

| Tables_in_aa |

+--------------+

| test_innodb |

| test_myisam |

+--------------+

3 rows in set (0.00 sec)

mysql>desc test_myisam

ERROR 1017 (HY000): Can't find file: 'test_myisam' (errno: 2)

发现只能通过show tables命令看见表名,但是表结构还是没有恢复,desc命令报错。

在与test_myisam.frm同一目录建立以下2个文件,文件内容可以为空:

test_myisam.MYD test_myisam.MYI

在MYSQL命令行使用MYSQL本身的数据表恢复命令repair命令恢复表,如下:

mysql>repair table test_myisam USE_FRM

+-----------------+--------+----------+----------+

| Table | Op | Msg_type | Msg_text |

+-----------------+--------+----------+----------+

| aa.test_myisam | repair | status | OK |

+-----------------+--------+----------+----------+

1 row in set (0.00 sec)

根据结果可以知道,恢复命令执行成功


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7447560.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存