如何将密钥添加到已经包含数据的MariaDB表中?

时间:2019-04-29 11:07:21

标签: mysql mariadb

我正在尝试使用MySQL更改表,但是它将在ALTER上显示错误:

  

#1062-关键字“ doctermitem”的条目“ 5009-daring-1”重复存在

SQL查询:

ALTER TABLE `wpi4_asp_index`
  ADD UNIQUE KEY `doctermitem` (`doc`,`term`,`blogid`),
  ADD KEY `term_ptype_bid_lang` (`term`(20),`post_type`(20),`blogid`,`lang`(10)),
  ADD KEY `rterm_ptype_bid_lang` (`term_reverse`(20),`post_type`(20),`blogid`,`lang`(10))

如何解决此错误?

2 个答案:

答案 0 :(得分:0)

您正尝试将doctermitem创建为UNIQUE KEY,但是该组合中已经存在重复的条目(如您提到的'5009-daring-1'),因此不允许添加doctermitemUNIQUE KEY

您需要手动删除这些重复的组合值,然后才能创建UNIQUE KEY

答案 1 :(得分:0)

您为唯一键定位的列不是唯一的-至少有一行是重复的,可能还会更多。

通过SQL语句查找它们:

select doc,
      term,
      blogid,
      count(*)
from wpi4_asp_index
group by doc,
      term,
      blogid
having count(*) > 1

然后,您必须确定问题是什么以及如何解决。从广义上讲,可能有两个原因:

  • 您的数据不正确。修复数据,例如通过删除重复项。
  • 您关于唯一性的假设是错误的-您可能需要在唯一键中添加一列。