Maison >base de données >tutoriel mysql >Pourquoi ne puis-je pas ajouter une contrainte de clé étrangère dans MySQL ?
Dépannage des erreurs de contrainte de clé étrangère MySQL
Les contraintes de clé étrangère (FK) de MySQL garantissent l'intégrité des données en reliant les tables. Cependant, l’ajout de FK peut parfois produire des erreurs. Ce guide aide à résoudre le problème courant « Impossible d'ajouter une contrainte de clé étrangère ».
Le problème :
Lors de l'ajout de contraintes FK entre les tables Patient
et Appointment
, vous pouvez rencontrer cette erreur :
<code>ERROR 1215 (HY000): Cannot add foreign key constraint</code>
Trouver la cause :
Pour diagnostiquer le problème, utilisez cette commande :
<code class="language-sql">SHOW ENGINE INNODB STATUS;</code>
Examinez attentivement la section « DERNIÈRE ERREUR DE CLÉ ÉTRANGÈRE » de la sortie.
La solution :
Une cause fréquente est une incompatibilité de type de données entre les colonnes enfant et parent. Par exemple :
Patient.MedicalHistory
(enfant) pourrait être SMALLINT
.medicalhistory.MedicalHistoryID
(parent) pourrait être INT
.La solution ? Assurez-vous que le type de données de la colonne enfant correspond précisément au type de données de la colonne parent. Dans ce scénario, modifiez Patient.MedicalHistory
en INT
.
Pratique recommandée :
Avant de créer des tables avec des FK, exécutez cette commande :
<code class="language-sql">SET FOREIGN_KEY_CHECKS=0;</code>
Cela vous permet de créer des tables dans n'importe quel ordre sans erreurs de contrainte FK dues à des tables parents manquantes. N'oubliez pas de réactiver les contrôles FK par la suite :
<code class="language-sql">SET FOREIGN_KEY_CHECKS=1;</code>
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!