0

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) )。你能帮我吗?...

4

5 回答 5

4

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

  • 删除原始行并再次尝试插入:DELETE FROM yourtable WHERE ID_Category = '18' AND Keyword = 'free mail'
  • 删除唯一约束以允许两行都存在。
  • 用于INSERT IGNORE忽略错误。
  • 使用REPLACE而不是INSERT用新行替换旧行。
  • 尝试INSERT知道客户端将收到错误警报。
于 2011-04-25T05:17:59.820 回答
2

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

行号不是一个指示,因为它不对应于键。

于 2011-04-25T05:27:55.097 回答
1

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

show index from website_categorization.category_keyword

查看索引名称。

于 2011-04-25T05:16:57.207 回答
1

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

于 2011-04-25T05:18:44.643 回答
1

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

于 2011-04-25T05:19:58.570 回答