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

Pourquoi est-ce que j'obtiens l'erreur « Impossible d'ajouter une contrainte de clé étrangère » dans MySQL ?

Mary-Kate Olsen
Libérer: 2024-10-26 17:44:29
original
312 Les gens l'ont consulté

Why Am I Getting the

Erreur de contrainte de clé étrangère : comprendre les causes et les solutions

La question concerne une erreur rencontrée lors de la création de la table de cours dans MySQL :

ERROR 1215 (HY000): Cannot add foreign key constraint
Copier après la connexion

Cette erreur indique un problème avec la contrainte de clé étrangère spécifiée dans l'instruction SQL. Une contrainte de clé étrangère garantit que les données de la colonne de clé étrangère d'une table (par exemple, un cours) font référence aux données existantes dans la colonne de clé primaire d'une autre table (par exemple, un département).

Pour résoudre cette erreur et créer avec succès la table des cours, il est essentiel de suivre ces directives :

  • Matching Engine, Datatype et Collation :

    • Les deux références Le champ (nom_dept) dans la table département et le champ de clé étrangère (nom_dept) dans la table cours doivent avoir le même moteur, tel que InnoDB.
    • Les champs doivent avoir des types de données identiques, y compris la longueur. Par exemple, VARCHAR(20) ou INT(10) UNSIGNED.
    • Le classement, qui spécifie l'encodage du jeu de caractères, doit également correspondre. Généralement, utf8 est utilisé.
  • Unicité du champ référencé :

    • Le champ référencé par la clé étrangère (dept_name dans la table des départements) doit être unique. Cela garantit que chaque ligne de la table des cours peut référencer correctement une ligne de la table des départements.
  • NON NULL Contraintes :

    • Si vous avez spécifié une option SET NULL dans la contrainte de clé étrangère, assurez-vous qu'aucune des colonnes impliquées n'est définie comme NOT NULL.

En respectant ces directives , vous pouvez éviter l'erreur « Impossible d'ajouter une contrainte de clé étrangère » et établir une intégrité référentielle appropriée entre les tables de cours et de département.

Remarque supplémentaire :

Désactivation de la clé étrangère les vérifications utilisant SET FOREIGN_KEY_CHECKS=0 peuvent vous permettre de créer la table avec la contrainte erronée, mais ce n'est pas recommandé. Ce paramètre peut entraîner des incohérences de données et une corruption de la base de 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!

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!