Ok, l’ho sistemato. Ho fatto quanto segue:
Entra nel container
./launcher enter app
Connettiti al database
su postgres -c 'psql discourse'
Prova a trovare i duplicati
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 righe)
Elimina il duplicato
DELETE FROM incoming_referers WHERE path LIKE '%/search/' AND id IN (6247);
Poi ricostruisci
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
Successivamente ho creato un altro backup, l’ho copiato sul nuovo server e l’importazione è andata a buon fine ![]()
Sarebbe utile se il processo di backup potesse rilevare i duplicati per evitare problemi. Sono stato fortunato ad avere accesso al server originale, che era ancora in esecuzione. Se avessi dovuto ripristinare un backup “freddo”, probabilmente sarebbe stato un problema maggiore.
Grazie mille per il tuo aiuto.