MyISAM テーブル形式の信頼性が非常に高い場合でも (SQL ステートメントによってテーブルに加えられたすべての変更は、ステートメントが返される前に書き込まれます)、次のいずれかのイベントが発生すると、テーブルが破損する可能性があります。
· mysqld プロセスが強制終了される書き込みの途中。
· 予期しないコンピュータのシャットダウンが発生します (コンピュータがシャットダウンされるなど)。
· ハードウェア障害。
· サーバーによって変更されるテーブルに対して外部プログラム (myisamchk など) を同時に使用できます。
· MySQL または MyISAM コードのソフトウェア欠陥。
破損したテーブルの一般的な症状は次のとおりです。
· テーブルからデータを選択すると、次のエラーが発生します。
· テーブルのキー ファイルが正しくありません: '...' を修復してください。
· クエリがテーブル内の行を見つけられません。 または。不完全なデータを返します。
CHECK TABLE ステートメントを使用して MyISAM テーブルの状態をチェックし、REPAIR TABLE を使用して破損した MyISAM テーブルを修復できます。 mysqld が実行されていない場合は、myisamchk コマンドを使用してテーブルを確認または修復することもできます。
テーブルが頻繁に破損する場合は、その原因を特定する必要があります。理解しておくべき最も重要なことは、サーバーのクラッシュの結果としてテーブルが破損したかどうかです。これを早期に確認するには、エラー ログで最後に再起動された mysqld メッセージを調べます。このようなメッセージが存在する場合、テーブルの破損はサーバーの停止の結果である可能性が非常に高くなります。そうしないと、通常の使用中に損傷が発生する可能性があります。これは欠陥です。この問題を示す再現可能なテスト ケースの作成を試みる必要があります。