Il semble y avoir une collision de contrainte dans la table d’analytique de PostgreSQL. Votre base de données contient déjà des enregistrements du nouveau domaine pour certaines dates, ce qui fait probablement que l’outil de remappage crée des doublons que PostgreSQL rejette.
Je vous conseille de supprimer les enregistrements de l’ancien domaine dans cette table spécifique, uniquement pour les dates où le nouveau domaine possède déjà des données, afin de préserver les données historiques et de débloquer l’outil de remappage. Mais faites d’abord une sauvegarde de sécurité.
Essayez ceci :
cd /var/discourse
./launcher enter app
# créer une sauvegarde de sécurité
discourse backup
# entrer dans la console de la base de données
sudo -u postgres psql discourse
/* trouver le nom exact de la table liée à cet index */
SELECT tablename
FROM pg_indexes
WHERE indexname = 'idx_bprd_rollups_date_referrer_unique';
En supposant que la requête ci-dessus retourne browser_pageview_rollup_details, utilisez ce nom de table dans la requête suivante.
/* supprimer les enregistrements d’analytique en collision */
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'
);
/* quitter postgres */
\q
Puis relancez l’outil de remappage.
discourse remap discourse.tobiaseigen.org digitallysovereign.org
Ensuite, utilisez la tâche rake rebake_match au lieu d’un rebake complet.
# rebake uniquement les posts contenant la chaîne du nouveau domaine
rake posts:rebake_match["digitallysovereign.org"]