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

ERRORE 1005 (HY000):impossibile creare la tabella x (errno:-1)

Questa è una vecchia domanda, ma l'ho appena ricevuta oggi e ho trovato una soluzione (e sì con errno =-1).

La nostra tabella è InnoDB ed è stata creata e distrutta ogni poche ore. Di recente abbiamo avviato un server slave per seguire quel master. Usiamo anche l'opzione "innodb_file_per_table".

L'errore si sarebbe verificato solo sullo slave, non sul master. Il problema era che di recente abbiamo sincronizzato lo slave con il master utilizzando rsync alcune ore prima.

Rsync ha copiato il file della tabella, ma nel frattempo è stato cancellato dal master, poiché si trattava di una tabella temporanea. Il file .idb esisteva quindi nello slave, ma non più nel master.

Quando il master ha inviato una richiesta per creare la tabella, lo slave non ha potuto perché il file era già lì. MySQL non era a conoscenza dell'esistenza di una tabella poiché i metadati dicevano che non c'era alcuna tabella. Suppongo che MySQL stesse cercando di creare il file, ma poiché era lì non è riuscito.

Nel mio caso, la soluzione era eliminare il file .idb in un'altra cartella (ovviamente prima con una copia di backup).

Successivamente, il database ci consentirebbe di creare la tabella e lo slave seguirebbe nuovamente il master

Un modo migliore per eseguire rsync sarebbe stato utilizzare un'opzione --delete per rimuovere tutti i file non aggiornati che erano stati eliminati dal master.

Ad ogni modo, potresti non avere quella situazione esatta come quella che ho descritto, ma potrebbe semplicemente essere un file non aggiornato che è rimasto lì per un motivo o per l'altro.