Maison > base de données > tutoriel mysql > Pourquoi est-ce que j'obtiens « Erreur dans le type de données du champ enfant lors de l'ajout d'une contrainte de clé étrangère » ?

Pourquoi est-ce que j'obtiens « Erreur dans le type de données du champ enfant lors de l'ajout d'une contrainte de clé étrangère » ?

DDD
Libérer: 2025-01-18 20:21:12
original
656 Les gens l'ont consulté

Why Am I Getting

Résolution des erreurs de contrainte de clé étrangère : "Erreur dans le type de données du champ enfant lors de l'ajout d'une contrainte de clé étrangère"

Ce guide traite de l'erreur SQL courante « ERREUR 1215 (HY000) : Impossible d'ajouter une contrainte de clé étrangère » lors de la création de relations de clé étrangère entre les tables « Patient », « Rendez-vous » et « MedicalHistory ». La cause première est généralement une incompatibilité de type entre les colonnes enfant et parent impliquées dans la contrainte.

Voici comment diagnostiquer et résoudre le problème :

  1. Vérification du type de données : Examinez attentivement les types de données des colonnes pertinentes : assurez-vous que la colonne « MedicalHistory » du tableau « Patient » correspond précisément à la colonne « MedicalHistoryID » du tableau « MedicalHistory ». De même, vérifiez que la colonne « Patient » du tableau « Rendez-vous » reflète exactement la colonne « PatientID » du tableau « Patient ». Même des différences mineures (par exemple, INT contre SMALLINT, VARCHAR(255) contre VARCHAR(256)) empêcheront l'ajout de la contrainte.

  2. Désactivation temporaire de la vérification des clés étrangères : Avant d'exécuter vos instructions ALTER TABLE pour ajouter des clés étrangères, exécutez SET FOREIGN_KEY_CHECKS=0;. Cela désactive temporairement les vérifications de clés étrangères, permettant la création de tables dans n'importe quel ordre. Pensez à les réactiver par la suite avec SET FOREIGN_KEY_CHECKS=1;.

  3. Analyse détaillée des erreurs : Utilisez SHOW ENGINE INNODB STATUS; pour inspecter la section « DERNIÈRE ERREUR DE CLÉ ÉTRANGÈRE ». Cela fournit des détails spécifiques sur la contrainte ayant échoué, en identifiant la colonne exacte à l'origine du problème.

  4. Exemple illustratif : Si 'MedicalHistoryID' dans la table 'MedicalHistory' est défini comme INT, alors 'MedicalHistory' dans la table 'Patient' doit également être INT, pas SMALLINT ou tout autre type.

En comparant méticuleusement les types de données et en utilisant les outils de diagnostic mentionnés ci-dessus, vous pouvez résoudre efficacement cette erreur de contrainte de clé étrangère et établir les relations correctes entre vos tables. N'oubliez pas de réactiver les vérifications de clés étrangères (SET FOREIGN_KEY_CHECKS=1;) après avoir créé vos contraintes.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal