• 误删数据文件.ibd,.frm文件,导致无法创建表,记录一次恢复数据表操作


    一、背景

    环境版本:
    MySQL版本 5.7.7 pod级mysql主从,误删除存储引擎为innodb的数据文件导致表消失,同名表无法创建,但是表空间存在该名称表;

    1.1 mysql启动报错;

    1.2 创建表报错;

    create table tablename;
    报错:
    ERROR:Tablespace tablename exists.

    1.3 查看表结构报错;

    desc tablename;
    报错:
    ERROR:Table tablename  doesnt exists

      

    二、解决方法:

    2.1 修改数据库my.cnf配置;

    修改my.cnf配置,并保存
    innodb_force_recovery=2  防止数据写入,更新,删除操作
    重启数据库后,重新创建表

    2.2 备份数据库;

    未删除数据库之前的数据表

    备份数据库所有表或者只备份表结构,这里笔者只备份表结构
    mysqldump -uroot -pxxx  -d dbname >dbname.sql

    2.3 删除数据库;

    drop database dbname;
    报错:
    Error dropping database (can not rmdir './dbname',errno: 39)

    解决方法:

    在数据库的物理目录中(mysql的data目录),进入XXXXX数据库目录,查看是否有文件存在,若存在,则清除
    
    cd dbname;
    rm -rf tablename 或者 mv tablename /home/tmp/
    然后再删除数据库
    > drop database dbname;
    
    Query ok,

    2.4 重新导入表;

    mysql -uroot -pxxxx dbname <dbname.sql

    2.5 创建表结构;

    create table tablename;
    报错:
    Got error 168 from storage engine;

    解决方法:

    查看日志报错:

    修改my.cnf配置,并保存
    innodb_force_recovery=0
    重启数据库后,重新创建表

    三、检查是否恢复

    检查数据库表文件是否创建;

     

  • 相关阅读:
    Object C学习笔记2-NSLog 格式化输出数据
    NSPoint 位置
    NSNull空值
    工商银行卡 安全码是什么
    查看苹果开发者账号类型
    IOS中录音后再播放声音太小问题解决
    解决RegexKitLite导入报错问题
    iOS开发--OC常见报错
    UIImagePickerController
    UIPageViewController
  • 原文地址:https://www.cnblogs.com/supery007/p/15151400.html
Copyright © 2020-2023  润新知