mysql插入错误1062

时间:2011-04-25 05:14:47

标签: mysql mysql-error-1062

SQL查询:

INSERT INTO  `website_categorization`.`category_keyword` (
`ID` ,
`ID_Category` ,
`Keyword` ,
`Score`)
VALUES (
NULL ,  '18',  'free mail',  ''
), (
NULL ,  '18',  'web email free',  ''
)  
MySQL说:

#1062 - Duplicate entry '18-free mail' for key 'ID_Category'

即使在第1062行没有条目,它也会显示此重复条目错误。(ID是主键,唯一(ID_Category,Keyword))。 你可以帮我吗?...

5 个答案:

答案 0 :(得分:4)

您的数据库中已有一行值为“18”和“免费邮件”。由于唯一约束,您不能有两个这样的行。你有一些选择:

  • 删除原始行并再次尝试插入:DELETE FROM yourtable WHERE ID_Category = '18' AND Keyword = 'free mail'
  • 删除唯一约束以允许两行存在。
  • 使用INSERT IGNORE忽略错误。
  • 使用REPLACE代替INSERT将旧行替换为新行。
  • 尝试INSERT知道客户端将收到错误警报。

答案 1 :(得分:2)

嗯,这意味着您插入的数据会破坏唯一约束。从错误信息中我会说一些数据已经存在(18,'免费邮件') - 你说它被限制为唯一。

行号不是指示,因为它与密钥不对应。

答案 2 :(得分:1)

这是MySQL错误号1062,而不是行号。错误意味着重复输入。您分别在ID和ID_Category中插入NULL和'18'两次,因此第二次执行时会抛出此错误。 ID_Category很可能是您的索引的名称。你可以做一个

show index from website_categorization.category_keyword

查看索引名称。

答案 3 :(得分:1)

您的ID_category键被声明为唯一,因此您不能拥有两个具有相同值的条目。

答案 4 :(得分:1)

如果您的ID字段确实是主键,则很可能(或应该)自动递增。因此,请将该字段保留在INSERT查询之外。