Maison > base de données > tutoriel mysql > le corps du texte

Pourquoi ne puis-je pas supprimer une table avec des contraintes de clé étrangère à l'aide de plusieurs requêtes ?

Linda Hamilton
Libérer: 2024-11-04 17:32:02
original
970 Les gens l'ont consulté

Why Can't I Drop a Table with Foreign Key Constraints Using Multiple Queries?

Échec de la contrainte de clé étrangère erronée

Lors de la tentative de suppression d'une table nommée zone d'une base de données, un message d'erreur a été rencontré indiquant une clé étrangère échec de contrainte. Bien que toutes les autres tables ayant des relations de clé étrangère avec la zone aient été supprimées, la contrainte a continué à persister.

Raisons possibles

InnoDB, le moteur de stockage utilisé par la base de données, ne permet généralement pas aux clés étrangères de référencer des tables en dehors du schéma actuel. Par conséquent, il était curieux de savoir pourquoi les contraintes de clé étrangère empêchaient toujours la suppression de la table de zone.

Solution

Après une enquête plus approfondie, il a été découvert que certains outils de base de données, tel que MySQL Query Browser ou phpMyAdmin, ouvrez une nouvelle connexion pour chaque requête. Ce comportement empêche la propagation des modifications sur plusieurs requêtes. Pour résoudre le problème, il est nécessaire d'exécuter toutes les instructions drop au sein d'une seule requête :

SET FOREIGN_KEY_CHECKS=0;  -- Disable foreign key checks
DROP TABLE my_first_table_to_drop;
DROP TABLE my_second_table_to_drop;
SET FOREIGN_KEY_CHECKS=1;  -- Re-enable foreign key checks
Copier après la connexion

La désactivation des vérifications de clé étrangère permet la suppression des tables impliquées dans des relations de clé étrangère sans déclencher l'erreur de contrainte. La réactivation ultérieure des vérifications de clés étrangères garantit l'intégrité de la base de données pour les opérations futures.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal