サイトURLを変更した後のremap実行エラー

PostgreSQLの分析テーブルで制約の衝突が発生しているようです。データベースには既に特定の日付に関する新ドメインのレコードが含まれているため、remapツールが重複を作成しようとしており、PostgreSQLがそれを拒否している可能性があります。

新ドメインがデータを持っている日付に対してのみ、旧ドメインのレコードを特定のテーブルから削除することを試みてください。これにより、履歴データを保持しつつremapツールを解放できます。ただし、まず安全なバックアップを作成してください。

以下を試してみてください:

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

その後、remapツールを再度実行します

discourse remap discourse.tobiaseigen.org digitallysovereign.org

次に、完全なrebakeではなく rebake_match rakeタスクを使用します

# 新ドメイン文字列を含む投稿のみをrebake
rake posts:rebake_match["digitallysovereign.org"]