テーブルに関する情報は2つの場所に保存されます:
- サーバー全体のtable.frmファイル
- ストレージエンジン固有のInnoDBディクショナリ
これら2つは同期している必要がありますが、この一貫性を強制するための信頼できるメカニズムはありません。いくつかの理由により、InnoDBディクショナリが同期しなくなります。
あなたの場合、辞書に孤立したレコードがあります。削除する必要があります。
InnoDBには、辞書レコードを手動で変更する方法はありません。ただし、偽のtable.frm(innodb_file_per_table =ONの場合はtable.ibdも)ファイルを作成し、それをデータベースディレクトリに配置して、テーブルを削除することはできます。
古いバージョンのInnoDBは、SPACENOの不一致について文句を言う可能性があります。次に、方法を確認します。 InnoDB辞書を修正する