Errore di importazione backup: "could not create unique index"

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 :smiley:

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.