Maison > base de données > tutoriel mysql > Pourquoi est-ce que j'obtiens une erreur MySQL 1022 (clé en double) lors de la création d'une table ?

Pourquoi est-ce que j'obtiens une erreur MySQL 1022 (clé en double) lors de la création d'une table ?

Mary-Kate Olsen
Libérer: 2024-11-30 17:00:12
original
303 Les gens l'ont consulté

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

Je ne peux pas écrire ; Clé en double lors de la création d'une table

Vous rencontrez l'erreur 1022 lorsque vous tentez de créer une nouvelle table en raison d'entrées de clé primaire en double. Même après avoir examiné la requête, vous pourriez avoir des difficultés à identifier la source de la duplication. Examinons plus en détail.

La requête que vous avez fournie contient une contrainte nommée "iduser" comme clé étrangère pour la colonne "userId". De plus, il spécifie une contrainte nommée « idcategory » pour la colonne « circleId ». Ces noms de contraintes semblent être à l'origine du problème.

Contraintes et duplication

Les contraintes dans MySQL doivent être uniques dans l'ensemble de la base de données, pas seulement pour la table spécifique. en cours de création ou de modification. Par conséquent, il est possible que vous ayez déjà d'autres tables ou index dans votre base de données qui utilisent les noms de contrainte « iduser » ou « idcategory ». Ce conflit entraîne une erreur de clé en double.

Identification des contraintes en double

Pour déterminer où ces contraintes sont actuellement utilisées, exécutez la requête suivante :

SELECT `TABLE_SCHEMA`, `TABLE_NAME`
FROM `information_schema`.`KEY_COLUMN_USAGE`
WHERE `CONSTRAINT_NAME` IN ('iduser', 'idcategory');
Copier après la connexion

Cette requête affichera les tables et schémas où se trouvent les contraintes "iduser" et "idcategory" référencé.

Solution

Pour résoudre l'erreur, vous devez renommer les contraintes en double. Pensez à utiliser des noms uniques spécifiques à la table actuelle, tels que « fk_user » pour la contrainte de clé étrangère sur la colonne « userId ». Une fois les contraintes renommées et la requête mise à jour, vous devriez pouvoir créer la table avec succès sans l'erreur de clé en double.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal