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

Jak opravím poškození InnoDB zamykání názvu tabulky od vytvoření (errno:-1) na AWS RDS?

DDL v InnoDB není transakční, takže je možné, že se informace v souboru .frm a ve slovníku InnoDB liší. Ve vašem případě to vypadá, že soubor .frm chybí, ale ve slovníku je osamocený záznam (no, ve skutečnosti záznamy v několika tabulkách slovníku SYS_*).

Záznam ze slovníku jednoduše nevymažete. Potřebujete příslušný .frm soubor, aby MySQL předalo váš DROP na úroveň InnoDB. S RDS to nemůžete udělat.

Ale můžete DROP celou databázi. V takovém případě InnoDB odstraní všechny záznamy ze slovníku včetně osiřelého.

Chcete-li tedy vyčistit svůj slovník, navrhuji následující:

  1. Zastavte veškerý provoz na MySQL, nastavte jej pouze pro čtení
  2. Vytvořte dočasnou databázi adstudio_tmp
  3. RENAME všechny tabulky z adstudio na adstudio_tmp
  4. DROP DATABASE adstudio . V tuto chvíli je prázdný. DROP vymaže všechny položky ve slovníku InnoDB.
  5. RENAME všechny tabulky zpět z adstudio_tmp do adstudio

Poté by měl být slovník čistý a budete moci vytvořit svůj data_feed_param .

Popsal jsem podobný problém po neúspěšném ALTER TABULKA . Podívejte se na další podrobnosti.



  1. Android Room – Jak resetovat automaticky generovaný primární klíč tabulky při každém spuštění aplikace

  2. UnsupportedOperationException s DriverManager.getConnection() v systému Android

  3. Jak převést bool na int v MySql

  4. Jak optimalizovat výkon COUNT(*) na InnoDB pomocí indexu