252 votes

Erreur 1022 - Impossible d'écrire ; clé dupliquée dans la table

Je reçois une erreur 1022 concernant les clés dupliquées sur la commande create table. Après avoir examiné la requête, je n'arrive pas à comprendre où la duplication a lieu. Quelqu'un d'autre peut-il le voir ?

SQL query:

-- -----------------------------------------------------
-- Table `apptwo`.`usercircle`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS  `apptwo`.`usercircle` (

 `idUserCircle` MEDIUMINT NOT NULL ,
 `userId` MEDIUMINT NULL ,
 `circleId` MEDIUMINT NULL ,
 `authUser` BINARY NULL ,
 `authOwner` BINARY NULL ,
 `startDate` DATETIME NULL ,
 `endDate` DATETIME NULL ,
PRIMARY KEY (  `idUserCircle` ) ,
INDEX  `iduser_idx` (  `userId` ASC ) ,
INDEX  `idcategory_idx` (  `circleId` ASC ) ,
CONSTRAINT  `iduser` FOREIGN KEY (  `userId` ) REFERENCES  `apptwo`.`user` (
`idUser`
) ON DELETE NO ACTION ON UPDATE NO ACTION ,
CONSTRAINT  `idcategory` FOREIGN KEY (  `circleId` ) REFERENCES  `apptwo`.`circle` (
`idCircle`
) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE = INNODB;

MySQL said: Documentation

#1022 - Can't write; duplicate key in table 'usercircle'

4voto

David Ibia Points 76

Je viens de passer les 4 dernières heures avec le même problème. Ce que j'ai fait, c'est simplement m'assurer que les contraintes avaient des noms uniques.

Vous pouvez renommer les contraintes. J'ai ajouté un numéro aux miennes pour pouvoir facilement retracer le nombre d'occurrences.

Exemple

Si une contrainte dans une table est nommée boy avec une clé étrangère X la contrainte suivante avec la clé étrangère X peut s'appeler boy1

Je suis sûr que tu trouverais de meilleurs noms que moi.

2voto

user3076750 Points 63

J'ai eu ce problème lors de la création d'une nouvelle table. Il s'avère que le nom de la clé étrangère que j'ai donné était déjà utilisé. Renommer la clé a réglé le problème.

2voto

Shubham Goel Points 649

Vous essayez probablement de créer une clé étrangère dans une table qui existe avec le même nom dans des tables existantes. Utilisez le format suivant pour nommer votre clé étrangère

tablename_columnname_fk

1voto

J'ai également rencontré ce problème. Vérifiez si le nom de la base de données existe déjà dans Mysql, et renommez l'ancienne.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X