sql >> Database teknologi >  >> RDS >> Mysql

FEJL 1005 (HY000):Kan ikke oprette tabel x (fejlnr:-1)

Dette er et gammelt spørgsmål, men jeg fik det lige i dag og fandt en løsning (og ja med errno =-1).

Vores bord er InnoDB og blev oprettet og ødelagt med få timers mellemrum. Vi havde for nylig startet en slaveserver for at følge denne master. Vi bruger også "innodb_file_per_table" mulighed.

Fejlen ville kun opstå på slaven, ikke på masteren. Problemet var, at vi for nylig synkroniserede den slave til masteren ved hjælp af rsync et par timer før.

Rsync kopierede tabelfilen, men blev derefter slettet af masteren i mellemtiden, da det var en midlertidig tabel. .idb-filen eksisterede derfor i slaven, men ikke længere i masteren.

Da masteren sendte en anmodning om at oprette tabellen, kunne slaven ikke, da filen allerede var der. MySQL var ikke klar over, at der eksisterede en tabel, da metadataene sagde, at ingen tabel var der. Jeg går ud fra, at MySQL forsøgte at oprette filen, men siden den var der, mislykkedes det.

I mit tilfælde var løsningen at slette .idb-filen i en anden mappe (selvfølgelig med en sikkerhedskopi først).

Derefter ville databasen give os mulighed for at oprette tabellen, og slaven ville derefter følge masteren igen

En bedre måde at have gjort det rsync på ville have været at bruge en --delete-indstilling til at fjerne alle forældede filer, der var væk fra masteren.

Under alle omstændigheder - du har måske ikke den nøjagtige situation, som jeg har beskrevet, men det kan simpelthen være en forældet fil, der er efterladt der af en eller anden grund.




  1. sqlalchemy:rækkefølgen af ​​forespørgselsresultatet uventet

  2. Forhindre automatisk stigning på MySQL duplikatindsættelse

  3. mysql sortering af versionsnumre

  4. Sequelize læser kun dato og klokkeslæt i UTC