View on GitHub

akkunchoi.github.com

DatabaseException Incorrect key file for table 'mydatabase/mytable.MYI'; try to repair it

MySQLでDELETE FROM ...で一行消したらDatabaseExceptionが発生してアクセスできなくった。 メッセージには Incorrect key file for table 'mydatabase/mytable.MYI'; try to repair it とある。

テーブルが壊れたらしいので修復する。

mysql> check table mytable;
+-----------------------------+-------+----------+----------------------------+
| Table                       | Op    | Msg_type | Msg_text                   |
+-----------------------------+-------+----------+----------------------------+
| mydatabase.mytable | check | warning  | Table is marked as crashed |
| mydatabase.mytable | check | error    | Found 426 keys of 427      |
| mydatabase.mytable | check | error    | Corrupt                    |
+-----------------------------+-------+----------+----------------------------+
3 rows in set (0.07 sec)

mysql> repair table mytable;
+-----------------------------+--------+----------+----------+
| Table                       | Op     | Msg_type | Msg_text |
+-----------------------------+--------+----------+----------+
| mydatabase.mytable | repair | status   | OK       |
+-----------------------------+--------+----------+----------+
1 row in set (0.14 sec)

check, repair はMyISAMでしか実行できないらしい。InnoDBの場合はどうなってるのだろう。