1. 该方法只介绍了如何救回这个表名(数据不恢复) 如果想要恢复原来数据 直接用extundelete把文件恢复后放回去即可
  2. 并且是适用于平时没有全备的情况下  如果有全备 直接那全备的frm和idb文件放回去 就可以了
  3. 该方法同样适用于数据表迁移(只迁移一个表)  因为discard再import的速度 远比先dump再恢复的速度要快得多

建议: 平时备份一下表结构是非常重要的 

-- 如果你直接删除了mysql的表文件 (.frm .idb)  在mysql5.6 可能你就悲剧了  可能再也用不回这个表名了

例子如下

-- 全在datadir目录下操作
 
-- 直接删除了表 tracking20160501的物理文件
 
 
1
2
rm -rf tracking20160501.*            
-- 删除了表tracking20160501的frm文件和idb文件
-- 此时在数据库已经看不到该表
 
1
2
mysql> show tables;                                                      
-- 查看数据库表
-- 但若想再创建该表或删除该表  也许就悲剧了
 
1
2
3
4
5
6
mysql> create table tracking20160501(id int);
ERROR 1050 (42S01): Table 'tracking20160501' already exists                        
-- 明明已经看不到该表了 却显示表已存在
mysql> drop table tracking20160501;
ERROR 1051 (42S02): Unknown table 'kdnet_analyze.tracking20160501'        
-- 悲剧了吧 创建不到也删不到。。
 
-- 查看一下现在的物理文件情况
 
1
2
3
ls tracking20160501.*
tracking20160501.ibd                              
 -- 之前删除了的表空间文件 他自己又创建了个出来  可能是刚刚的create table命令导致的 这里不用理
原因: 由于直接删除了表的物理文件 但mysql的信息库 information_schema 或 mysql 库对该表的信息还存在(具体记在哪里 还没找出来) 导致mysql还认为该表存在 所以创建不了 删除表时由于又找不到对应的物理文件 所以也删除不了  这样!! 难道这个表名就无法再用了吗?  有解决方法 如下

解决方法: 

-- 找其他表(最好是表结构一样的) 这里找的表叫ip_taobao 先复制这个表的.frm(表结构)文件 改名为误删的表名
 
1
2
cp -a ip_taobao.frm tracking20160501.frm                        
-- 这里为了保持mysql文件的拥有人和所属组 所以使用-a参数
-- 如果下面的操作有什么奇葩问题 可以重启一下数据库
 
-- 在mysql里 使用discard space命令 废弃误删表的表空间文件
 
1
alter table tracking20160501 discard tablespace;
-- 再复制ip_taobao表的表空间文件 改名为误删的表名
 
1
cp -a ip_taobao.ibd tracking20160501.ibd                        -- 同样使用-a 保持拥有人和所属组

-- 在mysql里 使用import space命令 导入新的表空间文件

 
1
2
mysql> alter table tracking20160501 import tablespace;             -- 导入时间可能会长点
Query OK, 0 rows affected, 5 warnings (7 min 36.94 sec)
-- 现在可以正常查询、删除和创建回这个表了
 
1
2
3
mysql> select * from tracking20160501 limit 1
mysql> drop table tracking20160501;
mysql> create table tracking20160501(id int);

误删mysql表物理文件的解决方法(不涉及恢复数据)的更多相关文章

  1. linux下误删mysql的root用户,解决方法

    开始对liunx界面不熟悉,可能由于不小心,把root误删了,怎么办? 1. # killall mysqld    干掉所有mysql进程 2. # mysqld_safe --skip-grant ...

  2. mysql cpu使用率过高解决方法

    mysql cpu使用率过高解决方法 1 mysql查看正在运行的语句 并且查看运行最多的mysql语句 MySQL 打开 general log 后,所有的查询语句都会记录在 general log ...

  3. DBeaver、Navicat、MySQL高频报错及解决方法,此文持续更新

    目录 第一坑,没有用管理员身份 第二坑,MySQL 服务无法启动 第三坑,报错:ERROR 1045 (28000): Access denied for user 'root'@'localhost ...

  4. 连接Mysql提示Can’t connect to local MySQL server through socket的解决方法

    mysql,mysqldump,Mysqladmin,php连接mysql服务常会提示下面错误: ERROR 2002 (HY000): Can't connect to local MySQL se ...

  5. 启动mysql时显示:/tmp/mysql.sock 不存在的解决方法

    启动mysql时显示:/tmp/mysql.sock 不存在的解决方法 启动mysql时报错的解决(mysql 5.0.45 redhat as 43)  ====================== ...

  6. 启动Mysql服务提示Can’t connect to local MySQL server through socket的解决方法

    启动Mysql服务常会提示下面错误: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/ ...

  7. Centos下忘记mysql的root密码的解决方法

    Centos下忘记mysql的root密码的解决方法 一:(停掉正在运行的mysql) [root@NetDakVPS ~]# service mysql stop 二:使用 “--skip-gran ...

  8. [转]MySQL忘记密码的正确解决方法

    http://database.51cto.com/art/201005/201986.htm 以下的文章主要介绍的是MySQL忘记密码的正确解决方法,在实际操作中如果你忘记MySQL密码是一件很头痛 ...

  9. Can’t connect to local MySQL server through socket的解决方法

    http://www.aiezu.com/db/mysql_cant_connect_through_socket.html mysql,mysqldump,php连接mysql服务常会提示下面错误: ...

随机推荐

  1. WPF设置控件获取键盘焦点时的样式FocusVisualStyle

    控件获取焦点除了用鼠标外,可以通过键盘来获取,比如Tab键或者方向键等,需要设置控件获取键盘焦点时的样式,可以通过设置FrameworkElemnt.FocusVisualStyle属性, 因为几乎所 ...

  2. JSP 基础(一)

    JavaServletPage(JSP) 一 JSP简介       Servlet的缺陷       –Servlet的编码.部署和调试任务繁琐       –生成动态网页繁琐,不利于项目分工   ...

  3. Vue Router的懒加载路径

    单页应用产出的入口chunk大小随着业务的复杂度线性增加,导致后期加载速度越来越慢.后面就需要对不同路径下的模块进行拆分,打包到相应的chunk下,按需加载,找到chunk的大小.个数和页面加载速度的 ...

  4. TabControl控件在左侧绘制tabPage页面

    效果图:

  5. js 前端分页空间控件

    现在web注重用户体验与交互性,ajax 提交数据的方式很早就流行了,它能够在不刷新网页的情况下局部刷新数据.前端分页多是用ajax请求数据(其他方式也有比如手动构造表单模拟提交事件等).通过js将查 ...

  6. 第16课-数据库开发及ado.net-数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍

    第16课-数据库开发及ado.net 数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍 SQL语句入门(脚本.命令) SQL全名是结构化查询语言(Structur ...

  7. VirtualBox配置centos7静态ip(详解)

    VirtualBox安装centos7配置静态ip地址可以本机访问,可以联网. 在开始之前先说一下,不知道为什么,我在网上百度的大多数是不能用的,或者只能主机访问,或者只能联网. 我的配置文件为ifc ...

  8. A simple Gaussian elimination problem.(hdu4975)网络流+最大流

    A simple Gaussian elimination problem. Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65 ...

  9. 盐水的故事(hdu1408)

    盐水的故事 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  10. postgreSQL数据库的监控及数据维护

    目前postgreSQL数据库的管理,数据查询等都需要安装postgreSQL软件或安装pgadmin等,远程访问都需要先登录到服务器等繁琐的操作.如果是开发团队,那么每个开发,测试,管理人员都要经历 ...