PG::UndefinedTable: ERROR: la relación "voice_rooms" no existe

Yo tuve este mismo problema y ejecutar ese script requirió un poco de orientación desde ask.discourse.com, ya que no es muy fácil para administradores de sistemas con menos experiencia.

Aquí hay un resumen para los demás:


Para quienes se encuentren con esto en la instalación estándar de Docker, así es como se ejecuta realmente el script anterior.

Obtén una shell y abre psql.

  • Contenedor único:

    cd /var/discourse
    ./launcher start app   ## Solo necesario si ya has tenido un rebuild fallido
    ./launcher enter app
    su -c 'psql discourse' postgres
    
    
  • Configuración de dos contenedores:

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

Deberías ver un prompt discourse=#. Si tienes dudas, ejecuta \conninfo.

Ejecuta el script.

Pega todo el bloque DO $$ ... $$; de la publicación de nat arriba en el prompt y presiona Enter. Una ejecución exitosa imprime avisos como:

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

Si en su lugar lanza una excepción (p. ej. «Both Resenha and Voice tables exist. Nothing was changed.»), detente y pega el mensaje de vuelta aquí — el script está diseñado para ser seguro y no cambia nada en ese caso.

Sal y reconstruye.

\q
exit

y luego, de vuelta en el host:

./launcher rebuild app          # contenedor único
./launcher rebuild web_only     # dos contenedores (también se puede hacer a través de bootstrap, por supuesto)

Puede que necesites dos reconstrucciones: la primera finaliza el estado de migración aplicado a medias y la segunda se completa limpiamente.