Maison  >  Article  >  base de données  >  Erreur MySQL 1022 : pourquoi est-ce que j'obtiens une erreur de clé en double lors de la création d'une table ?

Erreur MySQL 1022 : pourquoi est-ce que j'obtiens une erreur de clé en double lors de la création d'une table ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-28 04:50:30725parcourir

  MySQL Error 1022: Why Am I Getting a Duplicate Key Error When Creating a Table?

Erreur MySQL 1022 : identifier la duplication

Rencontrer l'erreur MySQL 1022 lors de la création d'une table peut être déroutant, surtout si l'instruction SQL semble valide . Examinons le problème et identifions la cause sous-jacente.

Dans le code SQL fourni, il est mentionné qu'il n'y a qu'une seule clé définie pour la table. Cependant, le problème semble résider dans la définition de la clé étrangère. MySQL renvoie l'erreur 1022 lors de la tentative d'insertion d'une clé en double lors de la création de la table.

Le problème vient du fait que le nom de la clé étrangère (error_id) est le même que le nom d'une autre clé étrangère ailleurs dans le modèle. Pour comprendre cela, considérons le scénario suivant :

  • La table "Catalogue" contient une clé étrangère nommée "fournisseur" qui fait référence à la table "Fournisseur".
  • La table "Produit" contient également un clé étrangère nommée "fournisseur" qui fait référence à la même table "Fournisseur".

Maintenant, si les deux clés étrangères ont le même nom ("fournisseur"), MySQL interprète cela comme une "collision" en langue étrangère noms de clés. Pour résoudre le problème, chaque clé étrangère doit avoir un nom unique dans l'ensemble du schéma.

Par exemple, vous pouvez utiliser différents noms comme :

  • catalog_supplier pour la clé étrangère dans table "Catalogue"
  • product_supplier pour la clé étrangère dans la table "Produit"

En différenciant les noms de clés étrangères, MySQL peut les distinguer et gérer correctement l'intégrité référentielle lors de la création des tables .

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