MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む
このページは機械翻訳したものです。
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.3.2「CHECK TABLE ステートメント」、セクション13.7.3.5「REPAIR TABLE ステートメント」、およびセクション4.6.4「myisamchk — MyISAM テーブルメンテナンスユーティリティー」を参照してください。
テーブルが頻繁に破損する場合は、その原因を突き止めるようにしてください。 最も重要なことは、予期しないサーバー終了の結果としてテーブルが破損したかどうかです。 エラーログの最新の restarted mysqld
メッセージを探すと、簡単に検証できます。 このようなメッセージがある場合、テーブルの破損はサーバーのダウンによる可能性が高くなります。 そうでなければ、破損は通常作業の最中に起きた可能性があります。 これはバグです。 問題点を明らかにする再現可能なテストケースを作成するべきです。 セクションB.3.3.3「MySQL が繰り返しクラッシュする場合の対処方法」およびセクション5.9「MySQL のデバッグ」を参照してください。