ERROR: could not create unique index DETAIL: Key (id)=(3105115) is duplicated

ERROR: could not create unique index DETAIL: Key (id)=(3105115) is duplicated

我在 PostgreSQL,PgAdmin 4 上遇到这个问题。我试图改变一个 table。

ALTER TABLE mytable 
ALTER COLUMN some_column type NUMERIC;

但我总是出错

DETAIL: Key (id)=(3105115) is duplicated.

但是当我 select 那 table Select count(id) from mytable where id = 3105115 我得到 count = 1.

以前有人遇到过这个问题吗?

如有任何帮助,我们将不胜感激。

您可能遇到了数据损坏。

尝试

REINDEX INDEX mytable_pkey;

或者唯一索引的名称。这可能会给您类似的错误消息。

您可以通过以下方式找到重复的条目:

SET enable_indexscan = off;
SET enable_bitmapscan = off;
SELECT id, count(*)
FROM mytable
GROUP BY id HAVING count(*) > 1;

删除这些重复项后,您的操作应该会成功。

与数据损坏一样:

  1. 导出整个集群并将其导入到新集群以消除任何损坏。

  2. 检查您的硬件