MySQL の混乱: テーブルは SHOW TABLES には存在するが、SELECT ステートメントには存在しない
MySQL で、「テーブルが存在しません」というエラー メッセージが表示される" テーブルからデータを SELECT しようとすると、特にテーブルが SHOW TABLES にリストされている場合には、困惑することがあります。 声明。この記事では、潜在的な原因を調査し、最近のユーザー エクスペリエンスに基づいた解決策を提供します。
原因を理解する
この問題に直面した場合、次の点を考慮することが重要です。 SHOW TABLES はファイルの存在をチェックしますが、ファイルの整合性は検証しません。したがって、データ ディレクトリに存在するテーブル ファイルが破損している可能性があり、「テーブルが存在しません」エラーが発生する可能性があります。
破損の犯人
ある例では、ユーザーが cp コマンドを使用してデータベース ディレクトリをコピーした後にこの問題が発生しました。このアクションでは、新しいデータ ディレクトリに重要な InnoDB テーブル関連ファイル (ibdata1、ib_logfile0、ib_logfile1 など) を含めることができず、破損が発生しました。
解決策
この問題を解決するには、ib* ファイルを元のデータ ディレクトリから新しいデータ ディレクトリにコピーすることが不可欠です。これは手動で行うことも、必要なすべてのファイルが正しい場所に存在することを確認するスクリプトを通じて行うこともできます。
結論
SHOW TABLES はテーブルが存在することを示す場合がありますが、アクセシビリティを保証するには十分ではありません。 ib* ファイルをデータベース ディレクトリとともに転送することで、テーブル ファイルの整合性を確保します。このアプローチにより、「テーブルが存在しません」エラーが解決され、テーブルからデータを SELECT できるようになります。
以上がMySQL がテーブルを表示しても SELECT ステートメントが失敗するのはなぜですか: データの整合性の問題ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。