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;
删除这些重复项后,您的操作应该会成功。
与数据损坏一样:
导出整个集群并将其导入到新集群以消除任何损坏。
检查您的硬件
我在 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;
删除这些重复项后,您的操作应该会成功。
与数据损坏一样:
导出整个集群并将其导入到新集群以消除任何损坏。
检查您的硬件