MySQL > テーブルが存在しません。しかし、存在します(または存在するはずです)質問する

MySQL > テーブルが存在しません。しかし、存在します(または存在するはずです)質問する

MySQL インストールの datadir を変更したところ、1 つを除いてすべてのベースが正しく移動しました。接続してUSEデータベースにアクセスできSHOW TABLES、すべてのテーブルも正しく返され、各テーブルのファイルは MySQL データ ディレクトリに存在します。

しかし、テーブルから何かをしようとすると、テーブルが存在しないというエラー メッセージが表示されます。しかし、ステートメントSELECTを通じて同じテーブルを表示できたので、これは意味がありません。SHOW TABLES

私の推測では、SHOW TABLESファイルの存在は一覧表示されますが、ファイルが破損しているかどうかはチェックされません。その結果、それらのファイルを一覧表示することはできますが、アクセスすることはできません。

ただし、これは単なる推測です。私はこれまでこのようなことは見たことがありません。現在、テストのためにデータベースを再起動することはできませんが、それを使用する他のすべてのアプリケーションは正常に動作しています。しかし、これは単なる推測であり、私はこれまでこのようなことは見たことがありません。

なぜこのようなことが起こるのか、誰か知っていますか?

例:

mysql> SHOW TABLES;
+-----------------------+
| Tables_in_database    |
+-----------------------+
| TABLE_ONE             |
| TABLE_TWO             |
| TABLE_THREE           |
+-----------------------+
mysql> SELECT * FROM TABLE_ONE;
ERROR 1146 (42S02): Table 'database.TABLE_ONE' doesn't exist

ベストアンサー1

万が一、まだ気にしている方がいる場合に備えて:

コマンドを使用してデータベースディレクトリを直接コピーした後も同じ問題が発生しました

cp -r /path/to/my/database /var/lib/mysql/new_database

テーブルを使用するデータベースでこれを行うとInnoDB、上記で説明した「テーブルが存在しません」という奇妙なエラーが発生します。

問題は、ib*MySQL データディレクトリのルートにあるファイル (例ibdata1: 、ib_logfile0およびib_logfile1) が必要であることです。

それらをコピーしたらうまくいきました。

おすすめ記事