Ok, lo he solucionado. He realizado lo siguiente:
Entrar al contenedor
./launcher enter app
Conectarse a la base de datos
su postgres -c 'psql discourse'
Intentar encontrar duplicados
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 filas)
Eliminar duplicado
DELETE FROM incoming_referers WHERE path LIKE '%/search/' AND id IN (6247);
Luego reconstruir
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
Después tomé otra copia de seguridad, la copié al nuevo servidor y se importó correctamente ![]()
Sería ideal que el proceso de copia de seguridad pudiera detectar duplicados para evitar cualquier problema; tuve la suerte de tener acceso al servidor original que aún estaba en funcionamiento. Si hubiera estado restaurando una copia de seguridad inactiva, esto probablemente habría sido un problema mayor.
Muchas gracias por tu ayuda.