Windows10系统Mysql使用ibd文件恢复表数据

本文详细描述了如何在MySQL8.0中处理因断电导致的数据丢失问题,通过备份原ibd文件、创建新库、调整表结构并覆盖文件来恢复数据,涉及IMPORTTABLESPACE和ROW_FORMAT调整技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

    由于项目地址经常断电,导致数据库频繁断开。最终,整个库都打不开了,最终的方案是建立新的库,将原来的ibd文件覆盖新的文件,达到数据恢复的效果,数据库版本都是8.0。

操作步骤:

1、找到原数据库的ibd文件存放地址,一般在mysql的data目录下,将其保存好。

 

2、 创建新的数据库(数据库编码格式要和之前的统一)。

3、 创建表,表结构的话必须要和之前的表结构一致。

4、 表创建好之后,找到mysql目录下的data目录,里面有每个库的名称,找到你创建的库文件夹,进去将原数据库的ibd文件复制到当前库文件夹下,覆盖现在的表的ibd文件,在这过程中,你可能弹出以下提示。这时候,你需要先停止mysql的运行,点击重试即可覆盖原文件。 

5、覆盖之后,你需要启动mysql服务,这时候你在Navicat打开新创建的数据库,打开表的时候,会弹出以下提示: 

  

6、建立查询面板,执行sql,如果显示执行成功的话,再次点击表即可看到数据了。

 alter  table  表名  IMPORT TABLESPACE;

如果报错以下提示的话

 

建议每次在执行前带上

-- 修改SQL_MODE
SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

alter  table  表名  IMPORT TABLESPACE row_format=DYNAMIC;

7 、如果出现以下报错的话

Error Code: 1808. Schema mismatch (Table has ROW_TYPE_DYNAMIC row format, <table_name>.ibd file has ROW_TYPE_COMPACT row format.)

   这是由于mysql 5.6的文件恢复到mysql 5.7版本导致的错误,需要在建表语句后面添加ROW_FORMAT=COMPACT,如下所示:

create table test(id int, name varchar(10)) row_format=compact;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瑞奇儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值