Maison > Article > base de données > Pourquoi l'erreur « Échec de la contrainte de clé étrangère erronée » se produit-elle lors de la suppression de tables ?
"Échec de la contrainte de clé étrangère erronée" expliqué et résolu
Lorsque vous rencontrez le message d'erreur "ERREUR 1217 (23000) à la ligne 40 : Impossible supprimer ou mettre à jour une ligne parent : une contrainte de clé étrangère échoue" lors de la tentative de suppression d'une table, il est important de comprendre la cause sous-jacente. Malgré la suppression de toutes les autres tables contenant des références de clé étrangère à la table problématique, l'erreur persiste.
Dans ce scénario, le problème provient du navigateur de requêtes MySQL ou de phpMyAdmin utilisant des connexions distinctes pour chaque requête. Pour résoudre ce problème, toutes les instructions drop doivent être consolidées en une seule requête comme suit :
SET FOREIGN_KEY_CHECKS=0; DROP TABLE my_first_table_to_drop; DROP TABLE my_second_table_to_drop; SET FOREIGN_KEY_CHECKS=1;
Ce faisant, les vérifications de clé étrangère sont temporairement désactivées, permettant la suppression réussie des tables. L'instruction finale SET FOREIGN_KEY_CHECKS=1 réactive les vérifications des clés étrangères, garantissant l'intégrité des données.
Il est important de noter qu'InnoDB ne prend pas en charge les clés étrangères entre schémas. Ainsi, le problème n'est pas causé par des références externes en dehors du schéma de base de données actuel.
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!