MySQL删除ibdata1后,如何通过.frm文件把表结构恢复过来

一、创建一个表test_0

 CREATE TABLE `te`.`test_0`(  
      `id` INT(9) ZEROFILL NOT NULL,
      `name` VARCHAR(12),
      PRIMARY KEY (`id`)
    ) ENGINE=INNODB;

二、把以下3个文件删除掉

  文件目录:D:\Program Files\MySQL\MySQL Server 5.5\data

三、重启数据库,再访问test_0时出现以下问题

此时,该表无法访问啦,怎么吧,表结构也没有备份,怎么能把表结构恢复过来呢???

四、开始为恢复表结构做准备

  1. 重新创建一个InnoDB的表,如:

    CREATE TABLE test (`id` BIGINT (20)) ENGINE = INNODB;

  2. 关闭MySQL Server,到D:\Program Files\MySQL\MySQL Server 5.5\data\te下,删除test.frm,把test_0.frm的名字改成test.frm
  3. 修改my.ini文件,在mysqld下添加:innodb_force_recovery=6
  4. 启动MySQL Server.
  5. 再来查看一下test表

  6. 好啦,此时test_0的表结构恢复过来了,然后,导出test的表结构,把create的名字改为test_0,就可以了
  7. 恢复的建表语句如下:
CREATE TABLE `test_0` (
      `id` INT(9) UNSIGNED ZEROFILL NOT NULL,
      `name` VARCHAR(12) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=INNODB DEFAULT CHARSET=utf8

备注:如果是表比较少的时候,恢复还可以,表多的时候,就此方法就比较麻烦啦!!!

时间: 2024-10-19 10:19:49

MySQL删除ibdata1后,如何通过.frm文件把表结构恢复过来的相关文章

关于mysql 删除数据后物理空间未释放

OPTIMIZE TABLE 当您的库中删除了大量的数据后,您可能会发现数据文件尺寸并没有减小.这是因为删除操作后在数据文件中留下碎片所致.OPTIMIZE TABLE 是指对表进行优化.如果已经删除了表的一大部分数据,或者如果已经对含有可变长度行的表(含有 VARCHAR . BLOB 或 TEXT 列的表)进行了很多更改,就应该使用 OPTIMIZE TABLE 命令来进行表优化.这个命令可以将表中的空间碎片进行合并,并且可以消除由于删除或者更新造成的空间浪费 .OPTIMIZE TABLE

关于mysql 删除数据后物理空间未释放(转载)

转自 关于mysql 删除数据后物理空间未释放(转载) - NETDATA - 博客园http://www.cnblogs.com/shawnloong/archive/2013/02/07/2908911.html OPTIMIZE TABLE 当您的库中删除了大量的数据后,您可能会发现数据文件尺寸并没有减小.这是因为删除操作后在数据文件中留下碎片所致.OPTIMIZE TABLE 是指对表进行优化.如果已经删除了表的一大部分数据,或者如果已经对含有可变长度行的表(含有 VARCHAR . B

关于mysql 删除数据后(.MYD,MYI)物理空间未释放

关于mysql 删除数据后物理空间未释放 OPTIMIZE TABLE 当您的库中删除了大量的数据后,您可能会发现数据文件尺寸并没有减小.这是因为删除操作后在数据文件中留下碎片所致.OPTIMIZE TABLE 是指对表进行优化.如果已经删除了表的一大部分数据,或者如果已经对含有可变长度行的表(含有 VARCHAR . BLOB 或 TEXT 列的表)进行了很多更改,就应该使用 OPTIMIZE TABLE 命令来进行表优化.这个命令可以将表中的空间碎片进行合并,并且可以消除由于删除或者更新造成

RDS for MySQL 删除数据后空间没有减少处理方法

公司的程序和数据库部署在阿里云上,数据库使用的是阿里云的RDS,这天,经理在开发群中发了一个信息: 您的RDS实例rm********0oq的磁盘在过去一周平均使用率已超过80.0%,建议您对实例规格进行升级,以免磁盘资源不足,影响业务运行.详情请您查看您阿里云注册邮箱中的邮件. 1.首先我在Navicat上远程delete阿里云RDS数据表中的数据, 找到对应的表,然后delete 删除部分数据,单个表中的数据达五千万条,所以操作起来很笨重.(懊恼啊,为什么当初没有做分表操作..) 按照产品经

关于mysql 删除数据后物理空间未释

OPTIMIZE TABLE 当您的库中删除了大量的数据后,您可能会发现数据文件尺寸并没有减小.这是因为删除操作后在数据文件中留下碎片所致.OPTIMIZE TABLE 是指对表进行优化.如果已经删除了表的一大部分数据,或者如果已经对含有可变长度行的表(含有 VARCHAR . BLOB 或 TEXT 列的表)进行了很多更改,就应该使用 OPTIMIZE TABLE 命令来进行表优化.这个命令可以将表中的空间碎片进行合并,并且可以消除由于删除或者更新造成的空间浪费 .OPTIMIZE TABLE

MySql性能调优(四)快速修改表结构

1.     修改varchar类型 为了满足需求,现要将varchar(6)改成varchar(8).这时更好的方法不是使用altertable modify,而是采用如下的步骤: A.创建一张临时表,把varchar设置为varchar(8),如下所示: B.  替换.frm表结构文件 C.  然后查看就可以了. 在windows下待测试. 也可以参考文章: http://blog.chinaunix.net/uid-77311-id-4440792.html

mysql表ibdata1数据切换到单个表储存、默认导出的表结构

释放MySQL ibdata1文件的空间 mysqldump选项: --add-drop-table:在每个创建数据库表语句前添加删除数据库表的语句: --add-locks:备份数据库表时锁定数据库表: --all-databases:备份MySQL服务器上的所有数据库: --comments:添加注释信息: --compact:压缩模式,产生更少的输出: --complete-insert:输出完成的插入语句: --databases:指定要备份的数据库: --default-charact

MySQL删除数据几种情况以及是否释放磁盘空间【转】

MySQL删除数据几种情况以及是否释放磁盘空间: 1.drop table table_name 立刻释放磁盘空间 ,不管是 Innodb和MyISAM ; 2.truncate table table_name 立刻释放磁盘空间 ,不管是 Innodb和MyISAM .truncate table其实有点类似于drop table 然后creat,只不过这个create table 的过程做了优化,比如表结构文件之前已经有了等等.所以速度上应该是接近drop table的速度; 3.delet

MySQL之二:库、储存引擎、表操作

一.库操作 1.数据库命名规则: 可以由字母.数字.下划线.@.#.$ 区分大小写 唯一性 不能使用关键字如 create select 不能单独使用数字 最长128位 2.数据库相关操作 #创建数据库 create database 数据库名 charset utf8; #查看数据库 show databases; show create database db1; select database(); #查看当前所在数据库 #选择数据库 use 数据库名 #删除数据库 drop databa