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 ?

Pourquoi est-ce que j'obtiens « ERREUR 1217 (23000)... la contrainte de clé étrangère échoue » lors de la suppression de tables dans MySQL ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-05 08:35:02291parcourir

Why Do I Get

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn