sql >> Databasteknik >  >> RDS >> Mysql

Fel:Det finns tabellutrymme för tabell xxx. Vänligen KASSA tabellutrymmet före IMPORT

Lite sent här men generellt sett har jag sett det här problemet uppstå när du får ett "tabellutrymme fullt"-fel när du kör i ett "innodb_file_per_table"-läge. Utan att gå in på för mycket detaljer (mer här a> ), definieras databasserverns tabellutrymme av inställningen innodb_data_file_path och är som standard ganska liten. Även om den blir större kan "tabellutrymmet fullt" fortfarande förekomma med större frågor och sådant (många icke-tabell-"grejer" lagras där, ångra loggar, cachar, etc...).

Hur som helst, jag upptäckte att om du tittar i OS-katalogen där filerna per tabell är lagrade, /var/lib/mysql som standard på OSX, /usr/local/var/mysql med homebrew iirc, hittar du en föräldralös tabellnamn.ibd-fil utan dess normala följeslagare tabellnamn.frm-fil. Om du flyttar den .ibd-filen till en säker tillfällig plats (bara för säkerhets skull) borde det lösa problemet.

$ 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/

En varning dock, se till vad som någonsin orsakar problemet ursprungligen, t.ex. lång löpande fråga, låst tabell, etc... har rensats. Annars får du bara en annan föräldralös .ibd-fil när du försöker en andra gång.



  1. det går inte att skapa autoinkrementerande primärnyckel med flask-sqlalchemy

  2. Postgres:vakuumkommandot rensar inte upp döda tuplar

  3. Bästa praxis för flerspråkig databasdesign

  4. PGError:ERROR:behörighet nekad för relation (när du använder Heroku)