2015-02-24 4 views
4

Donc, mon professeur m'a donné des tables pour l'insérer dans une base de données mais quand j'exécute son code, MySQL donne constamment le code d'erreur: 1062. Voici les tables de conflit et les inserts:Code d'erreur: 1062. Dupliquer l'entrée 'PRIMARY'

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) 
); 

INSERT INTO:

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 me donne la même erreur, mais avec 'Tallarines-20'

Désolé s'il y a une erreur d'orthographe. Merci!

+1

Était-ce un problème avec ma réponse, ou pourquoi l'avez-vous refusé? –

+0

@JonasPetersson DenisSpalenza vous a battu à elle ... –

Répondre

1

Les 7e et 8e INSERT lignes 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), de sorte que toute la ligne avec le même articulate et cod_fabricante générera erreur 1062.

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

Retirez l'une des lignes ou modifier la clé primaire de l'un d'eux.

+1

Vous pouvez changer la clé primaire comme Jonas a dit: 'clé primaire (articulo, cod_fabricante, categoria)' –

4

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) 
+1

Cela peut également arriver si vous essayez de définir comme clé primaire une colonne qui contient dupliquer (mon cas). –

+0

https://www.youtube.com/watch?v = UrYLYV7WSHM Ne devrait pas pouvoir faire cela? – Lealo

0

Vous avez une erreur de clé dupliquée dans le deuxième tableau ARTICULOS. vous avez la clé primaire avec la combinaison de deux colonnes (articulo, cod_fabricante).

Toutes les lignes sont donc définies de manière unique en combinant ces colonnes. supprimer les lignes en double de la deuxième table ou modifier la clé primaire à la place.

1

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 de clé primaire. Récemment, j'ai résolu ce problème en ajoutant auto_increment au champ clé primaire. J'ai suivi le correctif fourni dans ce post how to solve mysql error code : 1062 duplicate entry? cela a fonctionné pour moi. Vous aider aussi.

1

J'ai eu la même erreur en essayant de définir une colonne en tant que clé primaire. J'ai simplement supprimé la colonne et l'ai recréée, ce qui m'a permis de l'assigner comme clé primaire. Cela résout également l'erreur # 1075 où une colonne d'incrémentation automatique doit être une clé (si vous essayez de définir la colonne pour l'incrémentation automatique).