Maison > base de données > tutoriel mysql > Pourquoi est-ce que j'obtiens l'erreur MySQL 150 : Échec de la contrainte de clé étrangère ?

Pourquoi est-ce que j'obtiens l'erreur MySQL 150 : Échec de la contrainte de clé étrangère ?

DDD
Libérer: 2024-11-19 09:55:03
original
690 Les gens l'ont consulté

Why Am I Getting MySQL Error 150: Foreign Key Constraint Failure?

MySQL Errno 150 : Échec de la contrainte de clé étrangère

Lors de la tentative de création d'une contrainte de clé étrangère, les utilisateurs peuvent rencontrer l'erreur n° 150. Une clé étrangère la contrainte garantit l'intégrité des données en référençant un champ dans une autre table, forçant le champ référencé à exister dans la source table.

Cause potentielle : écart de type de données

Une cause fréquente de l'erreur n° 150 est une divergence dans les types de données entre la colonne référencée dans la table enfant (Sections) et la colonne de clé primaire dans la table référencée (Instructeurs).

Exemple :

create TABLE Instructors (
  ...
  ID int(10),
  ...
);
Copier après la connexion
create table Sections (
  ...
  Instructor_ID varchar(10),
  ...
  FOREIGN KEY (Instructor_ID) REFERENCES Instructors(ID)
  ...
);
Copier après la connexion

Dans cet exemple, la colonne ID de la table Instructeurs est définie comme un entier, tandis que l'Instructor_ID La colonne de la table Sections est définie comme une chaîne. Cette différence de types de données empêche l'établissement de la contrainte de clé étrangère.

Solution :

Pour résoudre ce problème, assurez-vous que les types de données des colonnes référencées dans les deux les tableaux correspondent. Dans l'exemple ci-dessus, remplacez Instructor_ID par un type de données entier :

create table Sections (
  ...
  Instructor_ID int(10),
  ...
);
Copier après la connexion

Autres causes potentielles :

  • Clé primaire non définie : La table référencée (Instructeurs) peut ne pas avoir de clé primaire défini.
  • Violation de l'intégrité des données : Une ligne existante dans la table enfant (Sections) peut contenir une valeur de clé étrangère qui n'existe pas dans la table référencée (Instructeurs).
  • Syntaxe incorrecte : Assurez-vous que la syntaxe de la contrainte FOREIGN KEY est correcte, y compris ON DELETE et ON Clauses MISE À JOUR.

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!

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