Ho il seguente problema. Gestisco un forum Discourse da oltre 10 anni e, dato che non sono riuscito a installare aggiornamenti da qualche tempo, volevo configurare un nuovo server:
Il server vecchio esegue: 3.4.0.beta4-dev
Il nuovo server: Ultima versione
Il backup ha già una dimensione di 673,2 MB come file .gz, escludendo gli allegati.
Purtroppo, il ripristino continua a interrompersi. Il file di log contiene questo errore:
[2026-06-16 07:54:52] ERROR: could not create unique index “index_incoming_referers_on_path_and_incoming_domain_id”
[2026-06-16 07:54:52] DETAIL: Key (path, incoming_domain_id)=(//, 5) is duplicated.
[2026-06-16 07:54:52] EXCEPTION: psql failed: DETAIL: Key (path, incoming_domain_id)=(//, 5) is duplicated.
[2026-06-16 07:54:52] /var/www/discourse/lib/backup_restore/database_restorer.rb:93:in 'BackupRestore::DatabaseRestorer#restore_dump'
/var/www/discourse/lib/backup_restore/database_restorer.rb:26:in ‘BackupRestore::DatabaseRestorer#restore’
/var/www/discourse/lib/backup_restore/restorer.rb:61:in 'BackupRestore::Restorer#run'
/var/www/discourse/script/spawn_backup_restore.rb:20:in ‘Object#restore’
/var/www/discourse/script/spawn_backup_restore.rb:33:in ‘block in ’
/var/www/discourse/script/spawn_backup_restore.rb:4:in 'Kernel#fork'
/var/www/discourse/script/spawn_backup_restore.rb:4:in ‘’
[2026-06-16 07:54:52] Trying to rollback...
Cosa posso fare per risolvere questo problema senza perdere gli ultimi 10 anni di dati?
La tabella incoming_referers tiene traccia dei percorsi URL che hanno inviato i visitatori al tuo forum. Possiede un indice univoco, il che significa che non possono esistere due righe con la stessa combinazione percorso + dominio.
Il tuo database contiene due righe con path='//' e incoming_domain_id=5. Quando tenta di ricostruire questo indice univoco durante il ripristino, rileva la duplicazione e interrompe l’intera transazione di ripristino.
Dovrai quindi trovare e rimuovere quella duplicazione in incoming_referers e creare un nuovo backup da ripristinare sul nuovo server.
Scusa se ti disturbo, ma sembra che io stia facendo qualcosa di sbagliato: dopo aver eseguito il comando “discourse=# select * from incoming_referers where path LIKE ‘%/search/’ ORDER BY incoming_domain_id;”, ricevo un errore di sintassi.
Ok, ora ho installato anche “apt install postgresql-client-common”. Tuttavia, ricevo ancora l’errore “Errore: è necessario installare almeno un pacchetto postgresql-client-.”
Mi dispiace davvero tanto per il comportamento sciocco che ho avuto.
Ho installato Rails e sembra che funzioni. L’ho eseguito anche con “rails c”. Sembra funzionare anche quello, ma quando inserisco il comando, appare così:
“root@community:/var/discourse# ActiveRecord::Base.connection.execute(<<~SQL)
-bash: errore di sintassi vicino al token imprevisto `<<’
root@community:/var/discourse# SELECT id, path, incoming_domain_id
SELECT: comando non trovato
root@community:/var/discourse# FROM incoming_referers
FROM: comando non trovato
root@community:/var/discourse# WHERE path = ‘//’
WHERE: comando non trovato
root@community:/var/discourse# AND incoming_domain_id = 5
AND: comando non trovato
root@community:/var/discourse# SQL”
Non preoccuparti, forse le mie istruzioni non sono poi così chiare
Ti confesso che sono un po’ perplesso: dici di aver appena installato Rails ma di non riuscire ad accedere al database. Forse la situazione è diversa perché si tratta di una versione più vecchia, ma onestamente penso di aver raggiunto i miei limiti.
Comunque, una volta dentro Rails, il prompt dovrebbe essere diverso. Dal tuo output, sembra che tu non sia ancora nella console di Rails.
A dire il vero, non credo nemmeno che tu sia dentro il container. Hai provato a eseguire ./launcher enter app?