web-dev-qa-db-fra.com

Code d'erreur: 1062. Entrée en double 'PRIMARY'

Donc, mon professeur m'a donné des tables pour l'insérer dans une base de données, mais lorsque j'exécute son code, MySQL donne constamment le code d'erreur: 1062. Voici les tables de conflits et les insertions:

LES TABLES

CREATE TABLE FABRICANTES(
COD_FABRICANTE integer NOT NULL,
NOMBRE         VARCHAR(15), 
PAIS           VARCHAR(15),
primary key (cod_fabricante)
);

CREATE TABLE ARTICULOS(
ARTICULO       VARCHAR(20)NOT NULL,
COD_FABRICANTE integer NOT NULL,
PESO           integer NOT NULL ,
CATEGORIA      VARCHAR(10) NOT NULL,
PRECIO_VENTA   integer,
PRECIO_COSTO   integer,
EXISTENCIAS    integer,
primary key (articulo,cod_fabricante),
foreign key (cod_fabricante) references Fabricantes(cod_fabricante)
);

INSÉRER DANS:

INSERT INTO FABRICANTES VALUES(10,'CALVO', 'ESPAÑA');
INSERT INTO FABRICANTES VALUES(15,'LU', 'BELGICA');
INSERT INTO FABRICANTES VALUES(20,'BARILLA', 'ITALIA');
INSERT INTO FABRICANTES VALUES(25,'GALLO', 'ESPAÑA');
INSERT INTO FABRICANTES VALUES(30,'PRESIDENT', 'FRANCIA');

INSERT INTO ARTICULOS VALUES ('Macarrones',20, 1, 'Primera',100,98,120);
INSERT INTO ARTICULOS VALUES ('Tallarines',20, 2, 'Primera',120,100,100);
INSERT INTO ARTICULOS VALUES ('Tallarines',20, 1, 'Segunda',99,50,100);
INSERT INTO ARTICULOS VALUES ('Macarrones',20, 1, 'Tercera',80,50,100);
INSERT INTO ARTICULOS VALUES ('Atún',10, 3, 'Primera',200,150,220);
INSERT INTO ARTICULOS VALUES ('Atún',10, 3, 'Segunda',150,100,220);
INSERT INTO ARTICULOS VALUES ('Atún',10, 3, 'Tercera',100,50,220);
INSERT INTO ARTICULOS VALUES ('Sardinillas',10, 1,'Primera',250,200,200);
INSERT INTO ARTICULOS VALUES ('Sardinillas',10, 1,'Segunda',200,160,200);
INSERT INTO ARTICULOS VALUES ('Sardinillas',10, 1,'Tercera',100,150,220);
INSERT INTO ARTICULOS VALUES ('Mejillones',10, 1, 'Tercera',90,50,200);
INSERT INTO ARTICULOS VALUES ('Mejillones',10, 1, 'Primera',200,150,300);
INSERT INTO ARTICULOS VALUES ('Macarrones',25, 1, 'Primera',90,68,150);
INSERT INTO ARTICULOS VALUES ('Tallarines',25, 1, 'Primera',100,90,100);
INSERT INTO ARTICULOS VALUES ('Fideos',25, 1, 'Segunda',75,50,100);
INSERT INTO ARTICULOS VALUES ('Fideos',25, 1, 'Primera',100,80,100);
INSERT INTO ARTICULOS VALUES ('Galletas Cuadradas',15, 1, 'Primera',100,80,100);
INSERT INTO ARTICULOS VALUES ('Galletas Cuadradas',15, 1, 'Segunda',70,50,100);
INSERT INTO ARTICULOS VALUES ('Galletas Cuadradas',15, 1, 'Tercera',50,40,100);
INSERT INTO ARTICULOS VALUES ('Barquillos',15, 1, 'Primera',100,80,100);
INSERT INTO ARTICULOS VALUES ('Barquillos',15, 1, 'Segunda',100,80,100);
INSERT INTO ARTICULOS VALUES ('Canutillos',15, 2, 'Primera',170,150,110);
INSERT INTO ARTICULOS VALUES ('Canutillos',15, 2, 'Segunda',120,150,110);
INSERT INTO ARTICULOS VALUES ('Leche entera',30, 1, 'Primera',110,100,300);
INSERT INTO ARTICULOS VALUES ('Leche desnat.',30, 1, 'Primera',120,100,300);
INSERT INTO ARTICULOS VALUES ('Leche semi.',30, 1, 'Primera',130,110,300);
INSERT INTO ARTICULOS VALUES ('Leche entera',30, 2, 'Primera',210,200,300);
INSERT INTO ARTICULOS VALUES ('Leche desnat.',30, 2, 'Primera',220,200,300);
INSERT INTO ARTICULOS VALUES ('Leche semi.',30, 2, 'Primera',230,210,300);
INSERT INTO ARTICULOS VALUES ('Mantequilla',30, 1, 'Primera',510,400,200);
INSERT INTO ARTICULOS VALUES ('Mantequilla',30, 1, 'Segunda',450,340,200);

L'ERREUR:  

Error Code: 1062. Duplicate entry 'Macarrones-20' for key 'PRIMARY'

Si je supprime cette ligne, la même erreur se produit mais avec 'Tallarines-20'

Désolé s'il y a une erreur de sort. Merci!

4
Mike

Vous essayez d'insérer deux lignes avec la même clé primaire.

INSERT INTO ARTICULOS VALUES ('Tallarines',20, 2, 'Primera',120,100,100);
INSERT INTO ARTICULOS VALUES ('Tallarines',20, 1, 'Segunda',99,50,100);

Vous auriez probablement besoin d'ajouter CATEGORIA à votre clé primaire pour la table ARTICULOS parce que vous essayez d'insérer plusieurs lignes avec la même clé primaire plusieurs fois.

primary key (articulo,cod_fabricante, categoria)
5
Jonas Petersson

Les 7ème et 8ème INSERT rangées sont égales. Vous ne pouvez pas entrer plus d'une ligne avec la même clé primaire. Notez que votre clé primaire est l'ensemble: (articulate, cod_fabricante), ainsi toute ligne avec les mêmes articulate et cod_fabricante générera l'erreur 1062.

INSERT INTO ARTICULOS VALUES ('Tallarines',20, 2, 'Primera',120,100,100);
INSERT INTO ARTICULOS VALUES ('Tallarines',20, 1, 'Segunda',99,50,100);

Supprimez l'une des lignes ou modifiez la clé primaire de l'une d'entre elles.

2
Denis Spalenza

Ce code d'erreur 1062 est dû à l'entrée en double. Vous essayez d'insérer une valeur qui existe déjà dans le champ clé primaire. Récemment, j'ai résolu ce problème en ajoutant auto_increment au champ de clé primaire. J'ai suivi le correctif fourni dans ce post comment résoudre le code d'erreur mysql: 1062 entrée en double? cela a fonctionné pour moi. Vous aider aussi.

1
John Cen

J'ai eu la même erreur en essayant de définir une colonne comme clé primaire. Je viens de supprimer la colonne et de la recréer, ce qui m'a permis de l'affecter à la clé primaire. Cela résout également l'erreur n ° 1075 dans laquelle une colonne d'incrémentation automatique est requise (si vous essayez de définir la colonne pour l'incrémentation automatique).

1
m3ldEr7ake

Vous avez une erreur de clé en double dans la deuxième table ARTICULOS. Vous avez une clé primaire avec une combinaison de deux colonnes (articulo, cod_fabricante).

Ainsi, toutes les lignes sont définies de manière unique en combinaison avec ces colonnes. supprime les lignes en double de la deuxième table ou change la clé primaire à la place.

0
Aman Aggarwal