Ripristino Discourse fallisce con errore "relazione già esistente"

A causa di una serie di eventi sfortunati, sembra che non riesca a ripristinare dal mio ultimo backup completo.

La storia completa verrà pubblicata in seguito, ma al momento il problema che sto riscontrando è che durante il ripristino di un backup viene generato questo errore:

Migrazione del database in corso…
ECCEZIONE: rake db:migrate
Impossibile migrare il database.
rake abortito!
StandardError: Si è verificato un errore, questa e tutte le successive migrazioni sono state annullate: (StandardError)

PG::DuplicateTable: ERRORE: la relazione "gamification_leaderboard_scores" esiste già

Sembra che si tratti di un problema legato ai miei plugin, ma apprezzerei un aiuto per decifrare i log e trovare una soluzione che consenta al ripristino di funzionare.

Comunque, ecco cosa è successo.

Più tardi oggi ho eseguito un aggiornamento di Discourse per portarlo alla versione 2026.5.0-latest b0873d3ecd, che ha introdotto alcune modifiche incompatibili, causando l’arresto del funzionamento del mio tema principale. Avrei dovuto verificare la compatibilità prima di aggiornare.

In preda al panico, ho pensato di poter ripristinare dall’ultimo backup per tornare a una versione di Discourse compatibile con il tema. Prima del ripristino, ho eseguito un backup completo, pensando che, se qualcosa fosse andato storto, avrei voluto avere il maggior numero possibile di punti di ripristino.

Bene, qualcosa è andato storto durante questo primo ripristino e Discourse è tornato online senza gli ultimi 15 giorni di contenuti. Indagando più a fondo, ho trovato un argomento su Meta che suggeriva di rinominare il file di backup da 2026-04-28-033449-v20260420014648.sql.gz a 2026-04-28-033449-v20260407093145.sql.gz. Non sono sicuro del motivo per cui questo abbia funzionato, ma almeno mi ha permesso di tornare al backup di ieri.

Devo ancora ripristinare dal mio ultimo backup completo eseguito questa mattina, che è quello che genera l’errore mostrato all’inizio.

Questo è successo con alcuni altri plugin. In qualche modo una migrazione ha creato la tabella, ma il sistema di migrazione non riconosce che è stata eseguita.

Non so spiegarlo in modo abbastanza chiaro da poterlo comunicare a qualcun altro. In linea di massima, dovresti fermare il ripristino prima che avvenga la migrazione (c’è un’opzione per il comando di ripristino per farlo) e eliminare la tabella, credo. Se ha senso, o quasi, potresti riuscire a capire come procedere con l’aiuto di https://ask.discourse.com/.

Se questo non aiuta e hai fretta e un budget, puoi chiedere nel canale Marketplace o scrivermi via email. Se non hai fretta o non hai un budget, c’è la possibilità che qualcuno possa spiegare cosa fare in modo che tu possa capire.