sql >> Databáze >  >> RDS >> Mysql

ERROR 1005 (HY000):Nelze vytvořit tabulku x (chyba:-1)

Toto je stará otázka, ale právě dnes jsem ji dostal a našel řešení (a ano s errno =-1).

Naše tabulka je InnoDB a byla vytvořena a zničena každých několik hodin. Nedávno jsme spustili podřízený server, abychom sledovali tohoto hlavního serveru. Také používáme možnost „innodb_file_per_table“.

Chyba by se vyskytla pouze na podřízeném zařízení, nikoli na hlavním zařízení. Problém byl v tom, že jsme před několika hodinami nedávno synchronizovali toto podřízené zařízení s nadřízeným pomocí rsync.

Rsync zkopíroval soubor tabulky, ale pak byl mezitím smazán masterem, protože se jednalo o dočasnou tabulku. Soubor .idb tedy existoval v podřízeném, ale již ne v masteru.

Když master poslal požadavek na vytvoření tabulky, slave nemohl, protože soubor už tam byl. MySQL nevědělo, že tabulka existuje, protože metadata říkala, že tam žádná tabulka není. Předpokládám, že se MySQL pokoušela vytvořit soubor, ale protože tam byla, selhalo.

V mém případě bylo řešením smazat soubor .idb v jiné složce (samozřejmě nejprve se záložní kopií).

Poté by nám databáze umožnila vytvořit tabulku a slave by pak znovu následoval master

Lepším způsobem, jak toho dosáhnout, by rsync bylo použít volbu --delete k odstranění všech zastaralých souborů, které byly pryč z hlavního serveru.

Každopádně – možná nemáte přesně takovou situaci, jakou jsem popsal, ale může to být jednoduše zastaralý soubor, který tam z nějakého důvodu zůstal.




  1. Porovnání serveru MariaDB s clusterem MariaDB

  2. Znamená cizí klíč postgres index?

  3. Jak převedu řádky na sloupce na serveru SQL Server 2005

  4. Jak uložit více možností vybraných uživatelem do tabulky