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\' ?
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 :
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!