我为表创建了一个唯一索引并收到以下错误:
SQL error: ERROR: could not create unique index "unique_product" DETAIL: Key (mastercode)=() is duplicated
所以我运行一个查询来检查重复的记录,并且确实发现了一些重复的内容:
select * from product p where (select count(*) from product pp where pp.mastercode = p.mastercode) > 1
但即使在删除它们后我无法创建索引,它也显示相同的错误,并且检查重复项的查询没有显示任何内容。
看起来在删除重复项之后它没有更新索引,或类似的东西。我该如何解决这个问题?
更新
我忘记提及但可能很重要的东西,我已经在字段mastercode
上有一个索引,这是一个默认索引(不是唯一的)。不知道这是否有事可做。
答案 0 :(得分:5)
检查此查询的结果:
SELECT mastercode, count(*)
FROM product
GROUP BY mastercode
HAVING count(*) > 1; -- not unique
答案 1 :(得分:1)
我相信你有一个空主码的实例,并试图插入另一个空主码。
尝试select * from product where mastercode is null;