シュレディンガーの MySQL テーブル: 存在の謎
テーブルを作成または変更しようとしているときに、悪名高い「テーブルは既に存在します」エラーが発生しました。それを削除しようとすると、「未知のテーブル」という難題に直面するだけで、複雑なジレンマが生じます。テーブルが存在しているように見えるにもかかわらず、操作をすべて回避するというこの矛盾した状態は、データベース管理者を当惑させる可能性があります。
この謎めいた現象の根本は、データ ディレクトリ内のファイルの欠落または破損にあります。 innodb_file_per_table を有効にして InnoDB を使用する場合、各テーブルは 2 つのファイルで表されます。1 つはテーブル定義を含む .frm ファイル、もう 1 つはそのデータを保存する .ibd ファイルです。 MYISAM テーブルの場合、ファイル トリオは .frm、.MYI、および .MYD ファイルで構成されます。
そのようなファイルが紛失したり破損したりすると、システムは競合する動作を示す可能性があります。たとえば、テーブル定義ファイルが残る可能性があり、作成しようとすると「テーブルはすでに存在します」というエラーが発生します。ただし、データ ファイルまたはインデックス ファイルが存在しない場合、削除しようとすると「不明なテーブル」エラーが発生します。
この問題を解決するには、単純ですが細心の注意を払って解決策を講じます。つまり、孤立したファイルを見つけて手動で削除します。 。不足している .frm、.ibd、.MYI、または .MYD ファイルを削除することで、不一致を修正し、期待どおりの動作を復元できます。
つまり、MySQL のシュレーディンガー領域では、テーブルは存在するものの、実際にはテーブルが存在しません。ではなく、このパラドックスを解決する鍵は、データ ディレクトリを注意深く調べて、必要なファイルがすべて存在することを確認することにあります。孤立したファイルを削除することで、データベースに調和を取り戻し、シュレーディンガーの表の複雑な謎に別れを告げることができます。
以上がMySQL テーブルが存在するのに存在しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。