sql >> Databasteknik >  >> RDS >> Mysql

FEL 1005 (HY000):Kan inte skapa tabell x (fel:-1)

Det här är en gammal fråga, men jag fick den här idag och hittade en lösning (och ja med errno =-1).

Vårt bord är InnoDB och skapades och förstördes med några timmars mellanrum. Vi hade nyligen startat en slavserver för att följa den mastern. Vi använder också alternativet "innodb_file_per_table".

Felet inträffade endast på slaven, inte på mastern. Problemet var att vi nyligen synkroniserade den slaven till mastern med rsync några timmar innan.

Rsync kopierade tabellfilen, men togs sedan bort av mastern under tiden, eftersom det var en temporär tabell. .idb-filen fanns därför i slaven, men inte längre i mastern.

När mastern skickade en begäran om att skapa tabellen kunde inte slaven eftersom filen redan fanns där. MySQL var omedveten om att en tabell existerade eftersom metadata sa att ingen tabell fanns där. Jag antar att MySQL försökte skapa filen, men eftersom den fanns där misslyckades det.

I mitt fall var lösningen att ta bort .idb-filen i en annan mapp (naturligtvis med en säkerhetskopia först).

Därefter skulle databasen tillåta oss att skapa tabellen, och slaven skulle sedan följa mastern igen

Ett bättre sätt att ha gjort det rsync skulle ha varit att använda ett --delete-alternativ för att ta bort alla inaktuella filer som försvunnit från mastern.

Hur som helst - du kanske inte har den exakta situationen som jag har beskrivit, men det kan helt enkelt vara en inaktuell fil som finns kvar av en eller annan anledning.




  1. Hur SQLite Length() fungerar

  2. mysql räkna ord i sql syntax

  3. Trigger baserad på sysdate

  4. Det går inte att lägga till främmande nyckel i MySQL 5.7 (Saknar begränsning i den refererade tabellen)