Maison  >  Article  >  base de données  >  Pourquoi est-ce que j'obtiens l'erreur de clé étrangère MySQL 1215 : \'Impossible d'ajouter une contrainte de clé étrangère\' ?

Pourquoi est-ce que j'obtiens l'erreur de clé étrangère MySQL 1215 : \'Impossible d'ajouter une contrainte de clé étrangère\' ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-25 14:08:13825parcourir

Why Am I Getting MySQL Foreign Key Error 1215:

Dépannage de l'erreur de clé étrangère MySQL : 1215

Lorsque vous essayez d'ajouter une contrainte de clé étrangère dans MySQL, vous pouvez rencontrer le code d'erreur : 1215 indiquant "Impossible d'ajouter une contrainte de clé étrangère (clés étrangères)." Cette erreur se produit généralement en raison d'une incompatibilité de types de données ou de problèmes structurels.

Inadéquation des types de données

Une cause possible est une incompatibilité des types de données entre la colonne faisant référence à la clé étrangère. et la colonne référencée. Par exemple, si la colonne classLeader de la table class a un type de données VARCHAR(255) alors que la colonne studentID référencée dans la table student est un INT, la contrainte de clé étrangère échouera. Les types de données des deux colonnes doivent être identiques.

Problèmes structurels

Si les types de données correspondent, le problème peut résider dans des écarts structurels entre les tables. Notamment :

  • La table référencée (étudiant dans ce cas) doit exister.
  • La colonne référencée (studentID) doit exister au sein de la table référencée.
  • La table référencée La colonne (studentID) doit être la clé primaire ou la clé unique de la table référencée (bien que dans MySQL, un index puisse suffire).

Exemple

-- Create student table
CREATE TABLE student (
  studentID int NOT NULL AUTO_INCREMENT,
  lastName varchar(255),
  firstName varchar(255),
  PRIMARY KEY (studentID)
);

-- Create class table
CREATE TABLE class (
  classID int NOT NULL AUTO_INCREMENT,
  nameClass varchar(255),
  classLeader int,  -- Change to INT to match studentID type
  FOREIGN KEY (classLeader) REFERENCES student(studentID),
  PRIMARY KEY (classID)
);

Clés étrangères contre clés

Les clés étrangères ne sont pas prises en compte clés traditionnelles (telles que les clés primaires ou uniques) qui identifient de manière unique les lignes d'une table. Au lieu de cela, leur objectif principal est de garantir l’intégrité référentielle et de maintenir les relations entre les tables. En appliquant des clés étrangères, vous pouvez éviter les incohérences et les données orphelines.

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:
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