zoukankan      html  css  js  c++  java
  • MySQL的奇怪的删表数据文件而表照样能打开

    MySQL的奇怪的删表数据文件而表照样能打开

    author:headsen  chen      2017-11-02   17:57:17

    现象:删除一个正在运行的mysql数据库的表的数据文件:*.MYD,此时在数据库里仍然能查看到该表的数据,就算是运行 了flush  privileges 命令仍然能查看到该数据,一旦重启数据库,则该表的会报错。

    mysql> select count(*) from c5;
    +----------+
    | count(*) |
    +----------+
    | 24576000 |
    +----------+
    1 row in set (0.00 sec)

    [root@client db1]# rm -f c5.MYD
    [root@client db1]# ls
    c5.frm c5.MYI c6.frm c6.MYD c6.MYI d1.frm d1.MYD d1.MYI d4.frm d4.MYD d4.MYI db.opt

    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)

    mysql> select count(*) from c5;
    +----------+
    | count(*) |
    +----------+
    | 24576000 |
    +----------+
    1 row in set (0.00 sec)

    [root@client db1]# service mysqld restart
    停止 mysqld: [确定]
    正在启动 mysqld: [确定]
    [root@client db1]#

    mysql> select count(*) from c5;
    ERROR 2006 (HY000): MySQL server has gone away
    No connection. Trying to reconnect...
    Connection id: 2
    Current database: db1

    ERROR 29 (HY000): File './db1/c5.MYD' not found (Errcode: 2)
    mysql>

    总结:当有某个表的数据文件被删除时,这个时候不要轻易的重启数据库,有可能这时该表的数据仍然保存在内存里。直接运行:create  table  d5  select * from c5;这样来把 c5表里的数据拷贝出来,之后再重启库。

  • 相关阅读:
    centos和ubuntu配置路由的三种方式
    程序包编译安装
    逻辑卷磁盘管理和dd命令
    linux磁盘管理
    CDOJ 1269 ZhangYu Speech 数组处理
    poj 2236 Wireless Network 并查集
    poj 1182 食物链 并查集
    POJ 2109 Power of Cryptography 数学题 double和float精度和范围
    CDOJ 1264 人民币的构造 区间问题+数论
    CDOJ 1263 The Desire of Asuna 贪心
  • 原文地址:https://www.cnblogs.com/kaishirenshi/p/7773577.html
Copyright © 2011-2022 走看看