我们都知道当我们建立数据表(innodb或myisam)时,会生成相应的文件(如:MYD,MYI,frm)

在这里,我们探讨下使用frm文件恢复 innodb和myisam类型表的结构,不过由于他们存储引擎的特性,所以恢复的方法也不一样,以下是详细的恢复过程。

myisamchk "xxx.frm" myisamchk 可以试出来,库是不是 myisam 类型

1:恢复innodb类型数据表结构

我们先从test数据目录 copy一个innodb.frm文件到另外一个库(innodb)

mysql> USE innodb;

mysql> DATABASE changed

mysql> SHOW CREATE TABLE innodb;

ERROR 1146 (42S02): TABLE 'innodb.innodb' doesn't exist

说明拷贝过来的文件是不能直接使用的,然后我们建立另外一个库(tmp),并在这个库里建立一个innodb类型的表

mysql> CREATE DATABASE tmp;

mysql> CREATE TABLE innodb (`id` int(11) NOT NULL) ) ENGINE=InnoDB

DEFAULT CHARSET=utf8;

然后我们copy innodb下的 innodb.frm 到 tmp数据目录下,并覆盖tmp目录下的innodb.frm

下面我们 restart mysql 试试

mysql> SHOW CREATE TABLE innodb \G;

*************************** 1. row **********

TABLE: innodb

CREATE TABLE: CREATE TABLE `innodb` (

`dd` varchar(1) NOT NULL,

`cc` varchar(1) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8

1 row IN SET (0.00 sec)

ERROR:

No query specified

mysql> INSERT INTO innodb (dd,cc) value (1,2);

mysql> Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM innodb;

ERROR 2013 (HY000): Lost connection TO MySQL server during query

所以数据结构是可以看到的,但是不可以查询,好了,这就是使用.frm恢复 innodb类型的表结构

2:恢复myisam类型数据表结构

恢复myisam类型的就简单多了,我看下面步骤

首先还是和上面一样,从test数据目录下 copy一个test.frm 到 tmp库的数据目录

mysql> USE tmp;

mysql> SHOW CREATE TABLE test;

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

提示找不到文件,下面我们来处理错误,在tmp数据目录下建立 test.MYI 和 temp.MYD 文件,然后我们使用mysql自带的修复表命令

mysql> repair TABLE test USE_FRM;

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

| TABLE | Op | Msg_type | Msg_text |

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

| test.test_myisam | repair | STATUS | OK |

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

1 row IN SET (0.00 sec)

mysql> SHOW CREATE TABLE test \G;

*************************** 1. row **********

TABLE: test

CREATE TABLE: CREATE TABLE `test` (

`dd` varchar(1) NOT NULL,

`cc` varchar(1) NOT NULL

) ENGINE=myisam DEFAULT CHARSET=utf8

1 row IN SET (0.00 sec)

ERROR:

No query specified

mysql> INSERT INTO test (dd,cc) value(1,2);

Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM test;

+------+

| dd | cc

+------+

| 1 |2

+------+

1 row IN SET (0.00 sec)

好了,这个表结构也看到了

mysql frm恢复数据_MYSQL使用.frm恢复数据表结构的实现方法相关推荐

  1. mysql没开启binlog恢复数据_MySQL:binlog恢复数据

    如果删库了,先别急着跑路. binlog是MySQL的二进制日志,会记录我们的操作.删除的数据可以通过binlog恢复,不过要先开启binlog功能,编辑my.cnf文件完成下面配置后重启. log- ...

  2. c 更新mysql数据_MySQL插入更新删除数据

    数据插入 插入完整的行 INSERT INTO customers VALUES(NULL, 'Pep E. LaPew', '100 Main Street', 'Los Angeles', 'CA ...

  3. mysql 软件导出导入数据_MySQL 之 导出导入数据

    mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump -u root -p --databases db_name > test_db.sql       ...

  4. mysql批量导入 导出数据_MySQL批量导入导出数据

    批量向mysql插入(文本)数据的方法有以下3种: 方法1. 可以先将要插入的数据统一保存在 .sql 文件中,各个insert 语句直接用分号分开.之后执行命令: source .sql 文件即可. ...

  5. mysql scrapy 重复数据_mysql数据库如何处理重复数据?

    前言 前段时间,很多人问我能不能写一些数据库的文章,正好自己在测试mysql数据库性能的时候,出现了一个问题,也就是出现了很多重复的数据,想起来自己long long ago写过一篇类似的,仅此就拿来 ...

  6. mysql 插入记录慢_mysql:insert插入数据过慢如何解决,设置innodb_flush_log_at_trx_commit为0就能解决...

    问题: 最近在做性能测试,造数据,发现insert好慢,只有几十条每秒,很奇怪,最后再网上找到了原因. 网文如下: MY SQL insert 速度过慢 最近在用MySQL做存储,测试中发现插入数据太 ...

  7. mysql字符集修改保存_mysql更改已有数据表的字符集,保留原有数据内容

    环境:在应用开始阶段没有正确的设置字符集,在运行一段时间以后才发现存在不能满足需求需要调整,又不想丢弃这段时间的数据,那么就需要进 行字符集的修改.字符集的修改不能直接通过"alter da ...

  8. mysql 复制数据_MySQL快速复制数据库数据表的方法

    某些时候,例如为了搭建一个测试环境,或者克隆一个网站,需要复制一个已存在的mysql数据库.使用以下方法,可以非常简单地实现. 假设已经存在的数据库名字叫db1,想要复制一份,命名为newdb.步骤如 ...

  9. mysql怎么保证热点数据_MySQL里有2000w数据,redis中只存20w数据,如何保证redis中数据都是热点数据...

    计算20w的热点数据占据内存的大小.然后在Redis中,配置最大内存容量,在redis.conf文件maxmemory 标签中配置. 当redis内存数据大小上升到一定大小的时候,就会施行数据淘汰策略 ...

最新文章

  1. Mac OS X Glut build instructions
  2. 企业微信_读取成员(获取用户详情)
  3. keil4怎么移植其他人的程序_【调试笔记】韦东山:在100ask_imx6ull上移植使用六轴传感器ICM20608...
  4. 服务器配置能连多少个小程序,每个服务器能配置多少小程序
  5. 全景图下载,全景管家高清全景图(一键下载建E、720云全景原图)
  6. mysql支付账单怎么设计_订单与支付设计
  7. linux mysql 命令行查询 乱码_mysql命令提示行连接乱码的解决
  8. 量化投资 -- 技术篇(6)投资组合策略性能评价(上)
  9. 人活着的三种境界[转帖]
  10. 大数据数据湖之hudi
  11. 淘宝传奇工程师多隆的程序世界
  12. 使用canvas进行图片压缩(前端图片压缩核心处理)
  13. Windows 中安装 MariaDB 数据库
  14. Type.GetType()在跨程序集反射时返回null的解决方法
  15. 数据结构笔记正式版8――手写
  16. 采样 | 高压直流采样电路详解
  17. SVN文件夹里面的文件没有绿色勾号
  18. 数据分析是什么?数据分析的现状是什么?
  19. 海康威视-测试-面经(一面+hr面)
  20. 百度站长工具使用指南

热门文章

  1. Oracle数据库查看用户状态
  2. 给用户增加SAP_ALL权限
  3. SAP的标准对话框函数
  4. 疫情退票引爆的潘多拉盒子,境外旅游商家濒临倒闭
  5. 主从mysql能过滤指定dml吗_MyCat教程二:mysql主从复制实现 - HG-93
  6. 计算机电路逻辑分析基础知识答案,计算机电路基础学习指导与习题解答
  7. arcgis 出图背景_ArcGIS中导出数据时老显示导出失败,显示“保存对象时出错”什么原因?...
  8. oracle如果为空替换为0,oracle 如何把0转为null
  9. python基础教程:强制数据类型转换教程及实例
  10. Python基础高级用法,必须要掌握的知识点