Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Fehler:Tablespace für Tabelle xxx existiert. Bitte VERWERFEN Sie den Tablespace vor dem IMPORT

Ein bisschen spät hier, aber im Allgemeinen habe ich gesehen, dass dieses Problem auftritt, wenn Sie einen Fehler „tablespace full“ erhalten, wenn Sie in einem „innodb_file_per_table“-Modus laufen. Ohne zu sehr ins Detail zu gehen (mehr hier ), wird der Tablespace des Datenbankservers durch die Einstellung innodb_data_file_path definiert und ist standardmäßig ziemlich klein. Selbst größer gemacht, kann der 'Tablespace voll' immer noch bei größeren Abfragen und dergleichen auftreten (viele Nicht-Tabellen-'Sachen' werden darin gespeichert, Undo-Logs, Caches, etc...).

Wie auch immer, ich habe festgestellt, dass Sie, wenn Sie in das Betriebssystemverzeichnis schauen, in dem die Dateien pro Tabelle gespeichert sind, /var/lib/mysql standardmäßig unter OSX, /usr/local/var/mysql mit Homebrew iirc, eine finden verwaiste Datei tablename.ibd ohne die normale begleitende Datei tablename.frm. Wenn Sie diese .ibd-Datei an einen sicheren temporären Speicherort verschieben (nur um sicherzugehen), sollte das Problem behoben sein.

$ ls /var/lib/mysql

table1.frm
table1.idb
table2.frm
table2.idb
table3.idb <- problem table, no table3.frm
table4.frm
table4.idb

$ mkdir /tmp/mysql_orphans
$ mv /var/lib/mysql/table3.ibd /tmp/mysql_orphans/

Eine Einschränkung jedoch:Stellen Sie sicher, was auch immer das Problem ursprünglich verursacht, z. lang laufende Abfrage, gesperrte Tabelle usw. wurde gelöscht. Andernfalls erhalten Sie beim zweiten Versuch einfach eine weitere verwaiste .ibd-Datei.