【问题标题】:How do you recover from an "incorrect key file" with MySQL (InnoDB)?如何使用 MySQL (InnoDB) 从“不正确的密钥文件”中恢复?
【发布时间】:2009-06-22 13:04:10
【问题描述】:
Incorrect key file for table 'widgets'; try to repair it 

这是 MySQL 在尝试将新索引应用于现有(非常大)表时给我的错误消息。当然,当我按照错误消息的建议尝试修复它时:

mysql> repair table widgets;
+-------------------+--------+----------+---------------------------------------------------------+
| Table             | Op     | Msg_type | Msg_text                                                |
+-------------------+--------+----------+---------------------------------------------------------+
| tedsdb.widgets    | repair | note     | The storage engine for the table doesn't support repair | 
+-------------------+--------+----------+---------------------------------------------------------+
1 row in set (0.00 sec)

我最好的做法是什么(在修补之前明显的完整备份之后)?

更新:我创建了一个相同模式的新表(MyISAM),复制了所有记录(插入到选择中),更改了新表(InnoDB)上的引擎,重命名了损坏表并重命名新表,然后再次尝试并得到相同的错误。

【问题讨论】:

    标签: mysql mysql-error-126


    【解决方案1】:

    看起来像一个老问题,但我刚刚遇到了这个问题。 MySQL 正在将一个临时表写入磁盘并且 /tmp 分区已填满。

    【讨论】:

    • tmp文件夹一般有2GB的限制,试试df -h看看
    • 对我来说也是如此......一些失败的备份转储填满了 /tmp 空间。很好提醒这个答案
    • 可能是许多人的解决方案,但对我不起作用。 (我们的 /tmp 只使用了 3%)
    【解决方案2】:

    我强烈建议在尝试之前备份。

    做一个假人

    ALTER TABLE widgets;
    

    【讨论】:

      【解决方案3】:

      当我们在 innodb 上做 Alter 时,需要观察“tmpdir”。 Error 1034 : Key repair 肯定是因为"tmpdir" full,你的alter会抛出这个错误。

      所以我建议在触发 Alter 时多关注一下您的“tmpdir”利用率。如果 tmp 正在使用 100%,那么您肯定会看到此错误 :)。

      【讨论】:

        猜你喜欢
        • 2014-03-09
        • 2016-12-27
        • 2011-04-23
        • 1970-01-01
        • 1970-01-01
        • 2019-01-27
        • 2011-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多