Impossible de supprimer l'index utilisé dans une contrainte de clé étrangère
Lorsque vous tentez de modifier une base de données en ajoutant une nouvelle colonne et en mettant à jour un index UNIQUE vers Si vous incluez cette colonne, les utilisateurs peuvent rencontrer l'erreur « MySQL ne peut pas supprimer l'index nécessaire dans une contrainte de clé étrangère ». Cela se produit lorsque l'index supprimé est référencé par une clé étrangère dans une autre table.
Comprendre le problème
MySQL crée automatiquement des index sur les tables qui ont des clés étrangères. Ceci est fait pour garantir l’intégrité référentielle et une récupération efficace des données. Lorsqu'une clé étrangère est définie, MySQL crée un index sur la ou les colonnes de la table de référencement qui correspondent à la ou aux colonnes de la table référencée. La suppression de l'index viole l'intégrité de la relation de clé étrangère.
Résolution du problème
Pour résoudre ce problème, il est nécessaire de supprimer la contrainte de clé étrangère qui fait référence à l'index. indice. Cela peut être fait en utilisant la syntaxe suivante :
ALTER TABLE [table_name] DROP FOREIGN KEY [foreign_key_name];
Une fois la contrainte de clé étrangère supprimée, l'index peut être supprimé sans erreur.
Exemple :
Considérons l'exemple suivant :
CREATE TABLE mytable ( ID int(11) NOT NULL AUTO_INCREMENT, AID tinyint(5) NOT NULL, BID tinyint(5) NOT NULL, CID tinyint(5) NOT NULL, PRIMARY KEY (ID), UNIQUE INDEX AID (AID, BID, CID), FOREIGN KEY (AID) REFERENCES mytable_a (ID) ON DELETE CASCADE, FOREIGN KEY (BID) REFERENCES mytable_b (ID) ON DELETE CASCADE, FOREIGN KEY (CID) REFERENCES mytable_c (ID) ON DELETE CASCADE );
Pour supprimer UNIQUE INDEX AID, la contrainte de clé étrangère mytable_ibfk_1 doit d'abord être supprimée à l'aide de l'instruction suivante :
ALTER TABLE mytable DROP FOREIGN KEY mytable_ibfk_1;
Après la contrainte de clé étrangère a été supprimée, l'index peut être supprimé avec succès.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!