Problemi InnoDB su MySQL

24 febbraio 2008

Recentemente ho cancellato un database con tabelle InnoDB e varie foreign key, e mi sono ritrovato con l’impossibilità di ricreare il medesimo database perché InnoDB si lamentava di foreign key con nomi duplicati, ma in realtà il duplicato era la chiave stessa sul vecchio database. Praticamente il database era stato rimosso da MySQL, ma nel dizionario dei dati di InnoDB era rimasta traccia delle chiavi esterne.
Per risolvere la situazione bisogna “fregare” InnoDB creando la tabella incriminata senza nessuna foreign key e engine=innodb, e poi rimuoverla e tutto tornerà normale.

in English:If removing an InnoDB table and trying to re-create it you get a duplicate foreign key name error and there is no real duplicate you fell in my same problem. I dropped a database with an InnoDB table with foreign keys, and when I tried to reload the db dump I got errors saying I had a duplicate foreign key, but the duplicate really was the same table: MySQL removed the database correctly from its data dictionary, while InnoDB left traces of the foreign key constraints.
To solve the problem you have to “cheat” InnoDB, so issue the create table command with no foreign key constraint, then drop the table and you’re set.