PG::UndefinedTable: ERROR: la relazione "voice_rooms" non esiste

Avevo lo stesso problema – ed eseguire quello script ha richiesto un po’ di guida da ask.discourse.com, perché non è semplicissimo per gli amministratori di sistema meno esperti!

Ecco un riepilogo per gli altri:


Per chi incontra questo problema con l’installazione standard di Docker, ecco come eseguire effettivamente lo script sopra.

Apri un shell e avvia psql.

  • Contenitore singolo:

    cd /var/discourse
    ./launcher start app   ## Necessario solo se hai già avuto un rebuild fallito
    ./launcher enter app
    su -c 'psql discourse' postgres
    
    
  • Configurazione a due contenitori:

    cd /var/discourse
    ./launcher enter data
    su -c 'psql discourse' postgres
    
    

Dovresti vedere un prompt discourse=#. In caso di dubbio, esegui \conninfo.

Esegui lo script.

Incolla l’intero blocco DO $$ ... $$; dal post di nat sopra nel prompt e premi Invio. Un’esecuzione riuscita stampa notifiche come:

NOTICE:  Renamed resenha_rooms to voice_rooms
NOTICE:  Renamed resenha_room_memberships to voice_room_memberships
...

Se invece solleva un’eccezione (ad esempio “Both Resenha and Voice tables exist. Nothing was changed.”), fermati e incolla il messaggio qui – lo script è volutamente sicuro e non modifica nulla in quel caso.

Esci e ricostruisci.

\q
exit

poi torna sull’host:

./launcher rebuild app          # contenitore singolo
./launcher rebuild web_only     # due contenitori (si può fare anche tramite bootstrap, ovviamente)

Potresti aver bisogno di due rebuild – il primo completa lo stato di migrazione parzialmente applicato, il secondo termina in modo pulito.