错误代码:1062。重复输入“PRIMARY”。

7
所以,我的教授给了我一些表格要插入到数据库中,但当我执行他的代码时,MySQL不断地给出错误代码:1062。 以下是冲突的表和插入语句: 表格
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 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);

错误:

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

如果我删除那一行会给我同样的错误,但是会变成“Tallarines-20”。

如果有任何拼写错误请谅解。谢谢!


1
我的回答有问题吗?还是你为什么取消了采纳它? - Jonas Petersson
@JonasPetersson,DenisSpalenza已经完成了... - ReinstateMonica3167040
5个回答

6
你正在试图插入具有相同主键的两行数据。
INSERT INTO ARTICULOS VALUES ('Tallarines',20, 2, 'Primera',120,100,100);
INSERT INTO ARTICULOS VALUES ('Tallarines',20, 1, 'Segunda',99,50,100);

由于您试图多次插入具有相同主键的多行数据,因此可能需要将CATEGORIA添加到表ARTICULOS的主键中。

primary key (articulo,cod_fabricante, categoria)

1
如果您尝试将包含重复值的列(我的情况)设置为主键,则可能会发生这种情况。 - Gellie Ann
https://www.youtube.com/watch?v=UrYLYV7WSHM 这个视频里的操作不应该被允许吧? - Lealo

2

第7行和第8行的INSERT语句是相同的。您不能输入具有相同主键的多行记录。请注意,您的主键是集合:(articulate, cod_fabricante),因此任何与相同articulatecod_fabricante的行都将生成错误1062。

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

移除其中一行或更改任意一行的主键。


1
你可以像 Jonas 所说的那样更改主键:primary key (articulo,cod_fabricante, categoria) - Denis Spalenza

1
这个错误代码1062是由于重复的条目导致的。您正在尝试插入一个已经存在于主键字段中的值。最近,我通过将auto_increment添加到主键字段来解决了这个问题。我按照如何解决mysql错误代码:1062重复条目?中提供的修复方法进行操作,这对我很有效。也希望能帮到你。

1
当我试图将列设置为主键时,出现了相同的错误。我只需删除该列并重新创建它,这样我就可以将其分配为主键。这也解决了 #1075 错误,其中需要自动递增列成为键(如果您尝试将列设置为自动递增)。

0
你的第二个表ARTICULOS存在重复键错误。 你有由两列(articulo,cod_fabricante)组成的主键。
因此,所有行都是通过这些列的组合唯一定义的。请从第二个表中删除重复行或更改主键。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接