Maison > Article > base de données > Pourquoi est-ce que j'obtiens « ERREUR 1217 (23000)... la contrainte de clé étrangère échoue » lors de la suppression de tables dans MySQL ?
MySQL : la gestion des fausses contraintes de clé étrangère échoue
Rencontre avec l'erreur « ERREUR 1217 (23000)... la contrainte de clé étrangère échoue » lors de tenter de supprimer une table MySQL, même si toutes les contraintes de clé étrangère correspondantes ont apparemment été supprimées, peut être déroutant.
Pour résoudre ce problème, envisagez la possibilité suivante :
Persistance des données due à Connexions multiples
Lors de l'utilisation d'outils de gestion de base de données comme MySQL Query Browser ou phpMyAdmin, on observe qu'une nouvelle connexion est établie pour chaque requête. Cela signifie que lorsque les tables sont supprimées individuellement, la base de données peut toujours contenir des références de clé étrangère qui sont orphelines et non prises en compte dans la connexion actuelle.
Solution : instructions de suppression consolidées
Pour remédier à cette situation, consolidez toutes les instructions drop en une seule requête. Par exemple :
SET FOREIGN_KEY_CHECKS=0; DROP TABLE my_first_table_to_drop; DROP TABLE my_second_table_to_drop; SET FOREIGN_KEY_CHECKS=1;
En regroupant toutes les instructions drop, les contraintes de clé étrangère sont désactivées lors de la suppression des tables. L'instruction supplémentaire SET FOREIGN_KEY_CHECKS=1 sert de précaution supplémentaire pour réactiver les vérifications de clé étrangère une fois l'opération terminée.
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!