Ho tentato di aggiornare la mia istanza Discourse, tuttavia a causa di alcuni problemi, sembra che sia fallito in uno stato parzialmente applicato. Quando eseguo ./launcher rebuild app, ricevo il seguente messaggio di errore, che indica una migrazione già (parzialmente) applicata:
I, [2022-03-24T21:13:16.043071 #1] INFO -- : cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:
PG::DuplicateColumn: ERROR: column "bookmarkable_id" of relation "bookmarks" already exists
Qualsiasi indicazione su come recuperare da questo (o se devo accettare la sconfitta e fare una nuova installazione) sarebbe apprezzata. Grazie!
Ho avuto un problema simile, ma sembra improbabile che la mia soluzione ti aiuti.
Non hai SKIP_POST_DEPLOYMENT_MIGRATIONS impostato nel tuo app.yml, vero? Se è così, devi migrare il database con esso impostato a zero e poi ricostruire, ma non penso che questo sia il tuo problema.
Questo è quello che pensavo. Quindi potrebbe esserci un problema effettivo legato alla possibilità di migrare da un punto specifico a quello attuale. Ma non dovrebbe succedere.
Ho svuotato tutte le tabelle che mi davano errori (una per una, alla fine erano 7), finché non sono riuscito a ricostruire l’app senza errori.
Nel tuo caso sembra che il problema sia una colonna:
PG::DuplicateColumn: ERROR: column "bookmarkable_id" of relation "bookmarks" already exists
Forse dovresti cercare a quale tabella appartiene, per poterla svuotare, oppure puoi semplicemente eliminare quella colonna.
Credo che il problema sia che, migrando parzialmente, quelle tabelle siano già create, quindi non può ricrearle e restituisce un errore. Forse si potrebbe aggiungere un condizionale a questo processo, in modo che non dia errori? (Non sono un esperto) @pfaffman
Penso che tu voglia rimuovere la colonna bookmarkable_id dalla tabella dei segnalibri. Quindi, dopo essere entrato nel container ed essere entrato in postgres in questo modo:
cd /var/discourse
./launcher enter app
su - postgres
psql
Quindi faresti
ALTER TABLE bookmarks
DROP COLUMN bookmarkable_id
DROP COLUMN bookmarkable_type;
Ma fare un backup solo del database non sarebbe una cattiva idea se il forum è in esecuzione. In caso contrario, puoi fare un backup con discourse backup dopo la riga enter app sopra.
Sarebbe possibile darmi una panoramica dei comandi per farlo, per favore?
Posso aggiornare e tutto il resto facilmente, ma è la prima volta che qualcosa va storto e, ad essere onesti, sono completamente fuori dalla mia zona di comfort lol
Potresti eseguire ./launcher start app e controllare la versione installata su https://your.domain/admin in modo che io possa provare a ripercorrere i tuoi passi. Ci sono plugin?
Questa sembra una soluzione probabile. Dovresti essere in grado di eseguire l’aggiornamento a questa versione e forse allora potrai raggiungere la versione corrente? Qualcosa del genere ha senso per me.