Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


15.2.4.1 MyISAM テーブルの破損

MyISAM のテーブルフォーマットは、きわめて信頼性の高いフォーマットです (SQL ステートメントが行うテーブルに対するすべての変更は、そのステートメントが戻る前に書き込まれます) が、それでも次の状況が発生した場合、テーブルが破損するおそれがあります。

  • mysqld プロセスは、書き込みの最中に強制終了されます。

  • コンピュータが予期せずシャットダウンされます (たとえば、コンピューターの電源が切られた場合など)。

  • ハードウェア障害。

  • サーバーが修正中のテーブルを、外部プログラム (myisamchkなど) を使用して同時に修正しています。

  • MySQL または MyISAM コードのソフトウェアバグです。

テーブルが破損した場合の典型的な兆候は、次のとおりです。

  • テーブルからデータを選択するときに、次のエラーが表示されます。

    Incorrect key file for table: '...'. Try to repair it
  • クエリーが、テーブル内で行を検出しない、または不完全な結果を返します。

MyISAM テーブルのヘルスを CHECK TABLE ステートメントを利用して確認でき、破損した MyISAM テーブルを REPAIR TABLE を利用して修復できます。mysqld が動作していない場合は、myisamchk コマンドを利用してテーブルを確認したり修復したりすることもできます。セクション13.7.2.2「CHECK TABLE 構文」セクション13.7.2.5「REPAIR TABLE 構文」、および セクション4.6.3「myisamchk — MyISAM テーブルメンテナンスユーティリティー」 を参照してください。

テーブルが頻繁に破損する場合は、その原因を突き止めるようにしてください。もっとも重要なのは、サーバーのクラッシュによってテーブルが破損されたかどうかを確認することです。エラーログの最新の restarted mysqld メッセージを探すと、簡単に検証できます。このようなメッセージがある場合、テーブルの破損はサーバーのダウンによる可能性が高くなります。そうでなければ、破損は通常作業の最中に起きた可能性があります。これはバグです。問題点を明らかにする再現可能なテストケースを作成するべきです。セクションB.5.4.2「MySQL が繰り返しクラッシュする場合の対処方法」および セクション24.4「MySQL のデバッグおよび移植」を参照してください。