Maison  >  Article  >  base de données  >  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\" ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-26 22:36:31525parcourir

 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 que vous n'avez pas 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, la déclaration doit être modifiée comme suit :

<code class="sql">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)
);</code>

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