看起来是 PostgreSQL 分析表中的约束冲突。你的数据库中已经包含了特定日期下新域名的记录,因此重映射工具可能正在创建重复项,而 PostgreSQL 拒绝了这些记录。
我建议你尝试在特定表中仅删除那些新域名已有数据的日期对应的旧域名记录,以保留历史数据并解除重映射工具的阻塞。不过,请先进行安全备份。
尝试以下操作:
cd /var/discourse
./launcher enter app
# 创建安全备份
discourse backup
# 进入数据库控制台
sudo -u postgres psql discourse
/* 查找与该索引关联的确切表名 */
SELECT tablename
FROM pg_indexes
WHERE indexname = 'idx_bprd_rollups_date_referrer_unique';
假设上述查询返回 browser_pageview_rollup_details,则在下一个查询中使用该表名
/* 删除冲突的分析记录 */
DELETE FROM browser_pageview_rollup_details
WHERE normalized_referrer = 'discourse.tobiaseigen.org'
AND date IN (
SELECT date
FROM browser_pageview_rollup_details
WHERE normalized_referrer = 'digitallysovereign.org'
);
/* 退出 PostgreSQL */
\q
然后再次运行重映射工具
discourse remap discourse.tobiaseigen.org digitallysovereign.org
然后使用 rebake_match rake 任务代替完全重烘焙
# 仅重烘焙包含新域名字符串的帖子
rake posts:rebake_match["digitallysovereign.org"]