"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi est-ce que j'obtiens l'erreur MySQL 1215 : \"Impossible d'ajouter une contrainte de clé étrangère\" ?

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

Publié le 2024-11-04
Parcourir:501

 Why Am I Getting MySQL Error 1215: \

Erreur MySQL 1215 : "Impossible d'ajouter une contrainte de clé étrangère"

Lorsque vous essayez de créer une contrainte de clé étrangère dans MySQL, il est crucial de assurez-vous que le champ référencé et le champ de clé étrangère respectent des exigences spécifiques. Voici comment diagnostiquer et résoudre cette erreur :

Cohérence du moteur

  • Le moteur "InnoDB" doit être utilisé pour les deux tables impliquées.

Type et longueur des données

  • Les types de données et les longueurs des deux champs doivent correspondre exactement. Par exemple, si le champ référencé est VARCHAR(20), le champ de clé étrangère doit également être VARCHAR(20).

Collation

  • Le classement indique le jeu de caractères et les règles de tri. Les deux champs doivent utiliser le même classement, tel que utf8.

Unicité

  • Le champ référencé doit être unique, souvent signifié par primaire ou unique clés. Le champ de clé étrangère ne peut pas faire référence à des champs autorisant des valeurs en double.

Gestion des valeurs nulles

  • Assurez-vous de ne pas avoir défini de condition SET NULL lorsque certaines colonnes référencées sont déclarées NON NULL.

Symptômes supplémentaires

Si l'erreur persiste, exécutez la commande SHOW ENGINE INNODB STATUS ; pour révéler des détails plus spécifiques.

Déclaration incorrecte

L'instruction SQL fournie crée une table nommée « cours » avec une contrainte de clé étrangère faisant référence à la table « département » sur le Champ « nom_du_service ». Toutefois, cette instruction est incorrecte car il lui manque la spécification du type de données pour le champ « nom_dept ». Pour remédier à cela, l'instruction doit être modifiée comme suit :

create table course (
    course_id varchar(7),
    title varchar(50),
    dept_name varchar(20),
    credits numeric(2,0),
    primary key(course_id),
    foreign key (dept_name) references department(dept_name)
);
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3