sql >> Database >  >> RDS >> Mysql

FOUT 1005 (HY000):Kan tabel x niet maken (errno:-1)

Dit is een oude vraag, maar ik kreeg deze vandaag pas en vond een oplossing (en ja met errno =-1).

Onze tabel is InnoDB en werd om de paar uur gemaakt en vernietigd. We hadden onlangs een slave-server gestart om die master te volgen. We gebruiken ook de optie "innodb_file_per_table".

De fout deed zich alleen voor op de slave, niet op de master. Het probleem was dat we die slave onlangs met de master hadden gesynchroniseerd met rsync, een paar uur eerder.

Rsync kopieerde het tabelbestand, maar werd in de tussentijd door de master verwijderd, aangezien het een tijdelijke tabel was. Het .idb-bestand bestond dus in de slave, maar niet meer in de master.

Toen de master een verzoek stuurde om de tabel te maken, kon de slave dat niet omdat het bestand er al was. MySQL wist niet dat er een tabel bestond, aangezien de metagegevens zeiden dat er geen tabel was. Ik neem aan dat MySQL probeerde het bestand te maken, maar omdat het daar was, is het mislukt.

In mijn geval was de oplossing om het .idb-bestand in een andere map te verwijderen (uiteraard met eerst een reservekopie).

Daarna zou de database ons in staat stellen om de tabel te maken, en de slave zou dan de master opnieuw volgen

Een betere manier om dat te doen zou zijn geweest door een --delete optie te gebruiken om alle verouderde bestanden te verwijderen die uit de master waren verdwenen.

Hoe dan ook - je hebt misschien niet die exacte situatie zoals ik heb beschreven, maar het kan gewoon een oud bestand zijn dat daar om een ​​of andere reden is achtergelaten.




  1. pg_ctl:fout bij het laden van gedeelde bibliotheken:libpq.so.5

  2. Node-mysql query invoegen met twee waarden?

  3. Afbreekregel '\n' in een bestand exporteren met MySQL INTO OUTFILE

  4. Hoe kan ik voorkomen dat het vervangende teken verandert in een html-entiteit in PHP?