通过frm恢复表

文章讲述了如何在InnoDB数据库恢复过程中遇到结构不兼容问题,通过创建新表、覆盖物理文件并调整`innodb_force_recovery`参数来修复。解决方案包括删除旧表、重新创建并覆盖表文件,确保数据库服务正确重启。

1、

随意创建一张表,但是这张表的名字要和你要恢复的.frm或者.ibd一致,我的.frm与.ibd文件为gonggao.frm与gonggao.ibd 因此我的创建表语句为:

create table gonggao(id int);

2、在执行上面的创建表语句之后,在服务里面或者使用net stop mysql关闭数据库服务,然后用需要恢复的gonggao.frm覆盖这个新建的ww数据库gonggao表的物理文件gonggao.frm,接着对配置文件(my.ini)设置innodb_force_recovery = 6,然后使用net start mysql启动服务,接着使用:desc gonggao; 查看该表结构,会出现下面错误信息:

contains 1 user defined columns in InnoDB, but 19 columns in MariaDB.

3、

解决方案:删除gonggao表重新创建一个包含4个字段的表,具体这4个字段是什么不用管的。具体执行过程为使用net stop mysql停掉服务,然后在配置文件my.ini中将innodb_force_recovery = 6注释掉(#或;均可),再net start mysql启动服务。接着在控制台先执行drop table gonggao;删除表,再执行创建表语句,我执行的是下面的创建表语句:create table gonggao(id int,id1 int,id2 int,id3 int);

紧接着按照前面的方式,使用net stop mysql关闭数据库服务,然后用需要恢复的gonggao.frm覆盖这个新建的ww数据库的gonggao表的物理文件gonggao.frm,接着对配置文件(my.ini)设置innodb_force_recovery = 6,然后使用net start mysql启动服务,接着使用:desc gonggao; 查看该表结构

4、

要通过.frm文件恢复MySQL的结构,可以尝试以下方法: 1. 创建一个与.frm文件相关的新: - 将原始的.frm文件从备份或另一个MySQL实例中复制到目标服务器的MySQL数据目录中。 - 在MySQL命令行界面或客户端工具中,使用CREATE TABLE语句创建一个新,并指定.frm文件作为定义文件。例如: ``` CREATE TABLE `your_table_name` ( -- 列定义 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci STATS_PERSISTENT=0 ROW_FORMAT=DYNAMIC COMMENT='Table Comment' DATA DIRECTORY='your_data_directory' INDEX DIRECTORY='your_index_directory' TABLESPACE `your_tablespace_name` /*!50100 PARTITION BY RANGE () SUBPARTITION BY HASH () SUBPARTITIONS 1 (PARTITION your_partition_name VALUES LESS THAN (MAXVALUE) ENGINE = InnoDB) */ /*!80016 SHARD_ROW_ID_BITS = 6 */ ; ``` - 替换`your_table_name`为您想要恢复名,并根据需要调整其他选项。 2. 执行SHOW TABLES语句验证新是否已成功创建。例如: ``` SHOW TABLES; ``` 请注意,这种方法只能恢复的结构,不包括数据和索引。如果您需要恢复完整的,包括数据和索引,请确保同时拥有相应的.ibd文件,并将其放置在正确的位置。 如果拥有相关的.ibd文件,可以尝试将它们放置在正确的数据目录中,并重启MySQL服务,以使MySQL能够识别和加载这些.ibd文件。然后,您可以尝试访问数据,或使用工具如mysqlfrm来从.ibd和.frm文件中恢复结构和数据。 在任何情况下,建议在进行任何恢复操作之前先进行备份,并参考MySQL官方文档、社区或寻求专业支持以获取更详细和针对性的帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值