Impossibile ripristinare il database: sql key duplicata

Ciao a tutti. Sto cercando di eseguire la migrazione di un server. Ho seguito questo processo.

Provando a ripristinare il database tramite la CLI, si blocca con il seguente errore:

CREATE INDEX
ERRORE:  impossibile creare l'indice univoco «unique_post_links»
DETTAGLIO:  La chiave (topic_id, post_id, url)=(19891, 32700, http://www.dhl-usa.com/home/home.asp) è duplicata.
ECCEZIONE: psql fallito: DETTAGLIO:  La chiave (topic_id, post_id, url)=(19891, 32700, http://www.dhl-usa.com/home/home.asp) è duplicata.
/var/www/discourse/lib/backup_restore/database_restorer.rb:92:in `restore_dump'
/var/www/discourse/lib/backup_restore/database_restorer.rb:26:in `restore'
/var/www/discourse/lib/backup_restore/restorer.rb:51:in `run'
script/discourse:149:in `restore'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/base.rb:485:in `start'
script/discourse:290:in `<top (required)>'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli/exec.rb:58:in `load'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli/exec.rb:58:in `kernel_load'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli/exec.rb:23:in `run'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli.rb:483:in `exec'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli.rb:31:in `dispatch'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli.rb:25:in `start'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli.rb:31:in `dispatch'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli.rb:25:in `start'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/exe/bundle:48:in `block in <top (required)>'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/friendly_errors.rb:120:in `with_friendly_errors'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/exe/bundle:36:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tentativo di rollback...
Rollback in corso...
Pulizia...
Eliminazione delle funzioni dallo schema discourse_functions...
Rimozione della directory tmp '/var/www/discourse/tmp/restores/default/2022-08-29-194458'...
Ripresa di sidekiq...
Segnalazione del completamento del ripristino...
Notifica a 'system' della fine del ripristino...
Fatto!
[FALLITO]
Ripristino completato.

Il forum funziona correttamente sul vecchio server. L’ho messo in modalità di sola lettura, ho eseguito il backup, l’ho trasferito sulla nuova macchina e ho avviato il ripristino.

Qualche idea su come risolvere questo problema, per favore?

Sembra che tu abbia un indice corrotto. Dovrai eliminare o aggiornare quelle voci. Se cerchi, penso che ci siano ancora alcuni argomenti che descrivono in generale come farlo.

Sul vecchio server, prova a reindicizzare quella tabella e continua a cambiare le cose finché non riesce. Se non hai familiarità con SQL e hai un budget, puoi chiedere in Marketplace o contattarmi.

Quale versione di Discourse e postgres stai eseguendo? Non ho visto molti casi di questo da quando è uscito postgres 13.

3 Mi Piace

Grazie Jay. Ti contatterò. Al momento sono al completo.

1 Mi Piace