Ok, c’est corrigé. Voici ce que j’ai fait :
Entrer dans le conteneur
./launcher enter app
Se connecter à la base de données
su postgres -c 'psql discourse'
Tenter de trouver les doublons
discourse=# select * from incoming_referers where path LIKE '%/search/' ORDER BY incoming_domain_id;
id | path | incoming_domain_id
------+------------+--------------------
3339 | /search/ | 33
6257 | /search/ | 91
1567 | /search/ | 298
1777 | /search/ | 341
3010 | /search/ | 418
6247 | /search/ | 418
4293 | /search/ | 644
2899 | /search/ | 653
3447 | /search/ | 793
3696 | /search/ | 852
4395 | /a/search/ | 1050
6968 | /search/ | 1305
5634 | /search/ | 1387
5834 | /search/ | 1437
6519 | /search/ | 1637
7127 | /search/ | 1787
7280 | /search/ | 1827
(17 rows)
Supprimer le doublon
DELETE FROM incoming_referers WHERE path LIKE '%/search/' AND id IN (6247);
Ensuite, reconstruire
discourse=# REINDEX SCHEMA CONCURRENTLY public;
WARNING: cannot reindex invalid index "public.incoming_referers_pkey_ccnew" concurrently, skipping
WARNING: cannot reindex invalid index "public.index_incoming_referers_on_path_and_incoming_domain_id_ccnew" concurrently, skipping
WARNING: cannot reindex invalid index "pg_toast.pg_toast_20732_index_ccnew" concurrently, skipping
REINDEX
J’ai ensuite pris une nouvelle sauvegarde, copiée sur le nouveau serveur, et l’importation s’est déroulée avec succès ![]()
Ce serait bien que le processus de sauvegarde détecte les doublons pour éviter tout problème. J’ai eu de la chance d’avoir accès au serveur d’origine qui était toujours en cours d’exécution. Si j’avais restauré une sauvegarde froide, cela aurait probablement posé plus de problèmes.
Un grand merci pour votre aide.