テーブル修復

Tag:

サーバーを強制終了したり、テーブルを適切にロックしないでmysqld外でテーブルを構成しているファイルを操作するとファイルが壊れる場合があります。ファイルが壊れた場合の対処法を紹介します。

破損確認

『CHECK TABLE』でテーブルが破損していないか確認します。

mysql> LOCK TABLES テーブル名 WRITE;
mysql> FLUSH TABLES;
mysql> CHECK TABLE テーブル名;
    
    ★結果表示

mysql> UNLOCK TABLES;

まず、テーブルにロックをかけ他ユーザからの読み書きを禁止します。
次に『FLUSH TABLES』を実行しメモリ上のデータをディスクに書き込んでおきます。
その後、『CHECK TABLE』で破損チェックします。

※FLUSH TABLES文について
MySQLサーバ実行中にデータベースディレクトリやテーブルファイルをコマンドで移動してしまったときなどにも
FLUSH TABLES文を使います。

参考サイト

CHECK TABLE 構文

テーブル修復

テーブルが破損していた場合は、『REPAIR TABLE』で修復します。ただ、これでも直らない場合もあるようです。
念のため、『REPAIR TABLE』を実行する前にテーブルを構成しているファイルのバックアップを取っておいたほうがいいです。

mysql> LOCK TABLES テーブル名 WRITE;
mysql> FLUSH TABLES;
mysql> REPAIR TABLE テーブル名;
    
    ★結果表示

mysql> UNLOCK TABLES;
参考サイト
REPAIR TABLE 構文

スポンサーリンク