Maison >base de données >tutoriel mysql >Comment résoudre les erreurs « Impossible d'ajouter une contrainte de clé étrangère » dans MySQL ?
Guide de dépannage des erreurs de contrainte de clé étrangère MySQL
Présentation
Lors de l'établissement de contraintes de clé étrangère pour les tables de la base de données, des erreurs peuvent être rencontrées lors de la création ou de la modification. L'une de ces erreurs est « ERREUR 1215 (HY000) : Impossible d'ajouter une contrainte de clé étrangère ».
Cas : Problèmes de contraintes de clé étrangère dans les tables Patient et Rendez-vous
La requête SQL suivante a rencontré une erreur lors de la tentative d'ajout d'une contrainte de clé étrangère aux tables Patient et Rendez-vous :
<code class="language-sql">CREATE TABLE IF NOT EXISTS `doctorsoffice`.`Patient` ( ... CONSTRAINT `FK_MedicalHistory` FOREIGN KEY (`MedicalHistory`) REFERENCES `doctorsoffice`.`medicalhistory` (`MedicalHistoryID`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `FK_PrimaryPhysician` FOREIGN KEY (`PrimaryPhysician`) REFERENCES `doctorsoffice`.`doctor` (`DoctorID`) ON DELETE CASCADE ON UPDATE CASCADE ); CREATE TABLE IF NOT EXISTS `doctorsoffice`.`Appointment` ( ... CONSTRAINT `FK_Patient` FOREIGN KEY (`Patient`) REFERENCES `doctorsoffice`.`Patient` (`PatientID`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `FK_Doctor` FOREIGN KEY (`Doctor`) REFERENCES `doctorsoffice`.`doctor` (`DoctorID`) ON DELETE CASCADE ON UPDATE CASCADE );</code>
Solution : Vérifier la compatibilité des types de données
Pour résoudre ce problème, vérifiez que les types de données des colonnes impliquées dans la contrainte de clé étrangère sont compatibles. Dans ce cas, veillez à :
Après avoir corrigé ces incompatibilités de types de données, vous pouvez ajouter avec succès la contrainte de clé étrangère.
Conseil supplémentaire : désactivez la vérification des clés étrangères
Pour ajouter plus de flexibilité lors de la création de tables dans un ordre spécifique, pensez à utiliser la commande suivante avant d'exécuter la requête SQL :
<code class="language-sql">SET foreign_key_checks=0;</code>
Cette commande désactive temporairement la vérification des clés étrangères, permettant ainsi la création de tables indépendamment des dépendances des tables parent-enfant. Une fois la table créée, la vérification des clés étrangères peut être réactivée à l'aide de la commande suivante :
<code class="language-sql">SET foreign_key_checks=1;</code>
En suivant ces directives, vous pouvez vous assurer que les contraintes de clé étrangère sont correctement implémentées dans votre base de données, évitant ainsi les erreurs et préservant l'intégrité des données.
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!