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. Vue + Element UI 实现权限管理系统 前端篇(八):管理应用状态

    使用 Vuex 管理应用状态 1. 引入背景 像先前我们是有导航菜单栏收缩和展开功能的,但是因为组件封装的原因,隐藏按钮在头部组件,而导航菜单在导航菜单组件,这样就涉及到了组件收缩状态的共享问题.收缩 ...

  2. Ajax初始接触

    演示JS对象的属性,方法和事件的使用 (1)window.location.href (2)form.submit() <form action="" method=&quo ...

  3. The case for learned index structures

    17年的旧文,最近因为SageDB论文而重读. 文章主要思路是通过学习key的顺序.结构等来预测record在位置.存在与否等.效果方面,据称部分场景下,相对b-tree可以优化70%的内存占用. 最 ...

  4. Entity Framework 6 Recipes 2nd Edition(目录索引)

    Chapter01. Getting Started with Entity Framework / 实体框架入门 1-1. A Brief Tour of the Entity Framework ...

  5. 白话js this指向问题

    前言   通过本文,你大概能了解this基础指向的问题,抛开例子去说this太虚幻,这里还是结合几篇博文做个整理,算是个人的记录了. 先说概念,this指向与申明无关,永远指向距离自己最近的最终调用者 ...

  6. 阿里巴巴java手册示例

    package com.led.daorumysql; /** * @Description:alibaba java development manual * @author 86157 * */ ...

  7. Postsharp 破解工具(通杀版,持续更新)

    2019.04.18 重要说明 VS2019 正式版已经发布了,Postsharp v6.2.2-Preview(预览版)也开始支持VS2019.不过截至目前,该预览版还不是特别稳定,因此提醒下大家在 ...

  8. .3-浅析webpack源码之预编译总览

    写在前面: 本来一开始想沿用之前vue源码的标题:webpack源码之***,但是这个工具比较巨大,所以为防止有人觉得我装逼跑来喷我(或者随时鸽),加上浅析二字,以示怂. 既然是浅析,那么案例就不必太 ...

  9. AutoMapper之嵌套映射

    8.嵌套映射 嵌套映射就是一个类中包含有另一个类,这种情况下我们应该如何映射呢? /// <summary> /// 源对象 /// </summary> public cla ...

  10. SQL SERVER存储过程中使用事务

    存储过程格式: CREATE PROCEDURE YourProcedure AS BEGIN SET NOCOUNT ON; BEGIN TRY---------------------开始捕捉异常 ...