恢复错误:无法创建唯一索引

我正在将我们的社区迁移到新的提供商。

CREATE INDEX
CREATE INDEX
ERROR:  could not create unique index "index_incoming_referers_on_path_and_incoming_domain_id"
DETAIL:  Key (path, incoming_domain_id)=(/m/search, 989) is duplicated.
CONTEXT:  parallel worker
EXCEPTION: psql failed: CONTEXT:  parallel worker
/var/www/discourse/lib/backup_restore/database_restorer.rb:92:in `restore_dump'
/var/www/discourse/lib/backup_restore/database_restorer.rb:26:in `restore'
/var/www/discourse/lib/backup_restore/restorer.rb:51:in `run'
script/discourse:149:in `restore'

我尝试了之前对这个错误的思考:

discourse=# select * from incoming_referers where path LIKE '%/search/' ORDER BY incoming_domain_id;
 id | path | incoming_domain_id
----+------+--------------------
(0 rows)

有人能帮我解决这个错误吗?

1 个赞

这很可能是一个损坏的索引。需要有人删除或修复重复的条目。如何使用 amcheck 检查 PostgreSQL 索引完整性(损坏)可能会有帮助。另请参阅 https://meta.discourse.org/t/cant-restore-due-to-corrupt-indexes-with-some-clues-on-how-to-deal-with-corrupt-indexes/137400。

1 个赞