Schrödingers MySQLテーブル: 存在しますが、質問しません

Schrödingers MySQLテーブル: 存在しますが、質問しません

最も奇妙なエラーが発生しています。

テーブルを作成または変更するときに、「テーブルが既に存在します」というエラーが発生することがあります。ただし、DROP TABLE は「#1051 - 不明なテーブル」を返します。そのため、作成も削除もできないテーブルを取得しました。

データベースを削除しようとすると、mysqld がクラッシュします。別の名前で別のデータベースを作成すると解決する場合もあれば、解決しない場合もあります。

私は約 50 個のテーブル (すべて InnoDB) を持つ DB を使用しています。この問題はさまざまなテーブルで発生します。

私はこれを Windows、Fedora、Ubuntu、MySQL 5.1 および 5.5 で経験しました。PDO、PHPMyAdmin、またはコマンドラインを使用した場合も同じ動作です。私はスキーマの管理に MySQL Workbench を使用しています。関連するエラー (エンドラインなど) がいくつか見られましたが、どれも私には関係ありませんでした。

いいえ、ビューではなくテーブルです。名前はすべて小文字です。

グーグルで検索できるあらゆることを試しました。テーブルのフラッシュ、.frm ファイルの db 間での移動、mysql ログの読み取りなどですが、すべてを再インストールする以外に何も役に立ちませんでした。

「テーブルを表示」では何も表示されず、「テーブルを記述」すると「テーブルが存在しません」と表示され、.frm ファイルも存在しませんが、「テーブルを作成」​​は依然としてエラーで終了し (「テーブルが存在しない場合は作成」も同様)、データベースを削除すると mysql がクラッシュします。

関連しているが役に立たない質問:

編集:

mysql> use askyou;
Database changed

mysql> show tables;
Empty set (0.00 sec)

mysql> create table users_has_friends (id int primary key);
ERROR 1050 (42S01): Table '`askyou`.`users_has_friends`' already exists

mysql> drop table users_has_friends;
ERROR 1051 (42S02): Unknown table 'users_has_friends'

そして、すべて同じです: テーブルは存在しないが、作成することもできません。

mysql> drop database askyou;
ERROR 2013 (HY000): Lost connection to MySQL server during query

名前は変わりますが、これは私が問題に遭遇した唯一のテーブル/データベースではありません

ベストアンサー1

データ ディレクトリにデータ ファイルが存在しないが、テーブル定義ファイルが存在する場合、またはその逆の場合に、この問題が発生することがあります。innodb_file_per_table を使用している場合は、データ ディレクトリをチェックして、問題のテーブルに ファイルと .ibd ファイルの両方があることを確認します。MYISAM の場合は、、およびファイル.frmがあるはずです。.frm.MYI.MYD

通常、この問題は孤立したファイルを手動で削除することで解決できます。

おすすめ記事