Ich hatte dasselbe Problem – und um das Skript auszuführen, musste ich mich ein bisschen von ask.discourse.com an die Hand nehmen lassen, da es für weniger erfahrene Sysadmins nicht gerade selbstverständlich ist!
Hier ist eine Zusammenfassung für andere:
Für alle, die bei der Standard-Docker-Installation auf dieses Problem stoßen: So führt man das obige Skript tatsächlich aus.
Eine Shell öffnen und psql starten.
-
Einzelner Container:
cd /var/discourse ./launcher start app ## Nur nötig, wenn bereits ein fehlgeschlagener Rebuild stattgefunden hat ./launcher enter app su -c 'psql discourse' postgres -
Zwei-Container-Setup:
cd /var/discourse ./launcher enter data su -c 'psql discourse' postgres
Du solltest einen discourse=#-Prompt sehen. Im Zweifel \conninfo ausführen.
Das Skript ausführen.
Füge den gesamten DO $$ ... $$;-Block aus Nats Beitrag oben am Prompt ein und drücke Enter. Bei erfolgreichem Lauf werden Meldungen wie diese ausgegeben:
NOTICE: Renamed resenha_rooms to voice_rooms
NOTICE: Renamed resenha_room_memberships to voice_room_memberships
...
Falls stattdessen eine Ausnahme ausgelöst wird (z. B. „Both Resenha and Voice tables exist. Nothing was changed.“), brich ab und füge die Meldung hier ein – das Skript ist bewusst sicher gestaltet und ändert in diesem Fall nichts.
Beenden und neu aufbauen.
\q
exit
dann auf dem Host:
./launcher rebuild app # einzelner Container
./launcher rebuild web_only # zwei Container (kann natürlich auch über den Bootstrap erfolgen)
Möglicherweise sind zwei Rebuilds nötig – der erste schließt den halb angewendeten Migrationszustand ab, der zweite läuft dann sauber durch.