DBAtlas · Atlas d'exploitation des bases de données

1553: Cannot drop index needed in a foreign key constraint (impossible de supprimer un index requis par une contrainte de clé étrangère)

MySQL

Que signifie cette erreur ?

Vous essayez de supprimer un index requis par une contrainte de clé étrangère. InnoDB ne permet pas de retirer l'index sur lequel repose une FK.

Cause

Dans InnoDB, chaque clé étrangère exige un index sur sa ou ses colonnes de référence. La suppression de cet index avec DROP INDEX est refusée car elle laisserait la contrainte FK sans support. Cela survient généralement lors d'une réorganisation de table (nettoyage d'index).

Comment la corriger

Supprimez d'abord la contrainte de clé étrangère, puis l'index : ALTER TABLE my_table DROP FOREIGN KEY fk_name; puis DROP INDEX idx_name ON my_table; Si nécessaire, recréez la FK de sorte qu'elle repose sur un autre index approprié. Pour lister les FK existantes : SELECT constraint_name, table_name FROM information_schema.key_column_usage WHERE referenced_table_name IS NOT NULL;

Ouvrir dans DBAtlas →

Autres entrées pour ce moteur