PG::UndefinedTable: ERROR: relation "voice_rooms" does not exist

私にも同じ問題が発生しました。そのスクリプトを実行するには、ask.discourse.comからの少しの指導が必要でした。経験の浅いシステム管理者にとって、それほど簡単ではないからです。

他の人のために要約します:


標準的なDockerインストールでこの問題に遭遇した方のために、上記のスクリプトを実際に実行する方法を説明します。

シェルを開いて psql を起動します。

  • シングルコンテナの場合:

    cd /var/discourse
    ./launcher start app   ## すでに再構築が失敗した場合のみ必要です
    ./launcher enter app
    su -c 'psql discourse' postgres
    
    
  • 2コンテナ構成の場合:

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

discourse=# プロンプトが表示されるはずです。不明な場合は \conninfo を実行してください。

スクリプトを実行します。

プロンプトに、natの前の投稿にある DO $$ ... $$; ブロック全体を貼り付けてEnterを押します。正常に実行されると、次のような通知が表示されます:

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

```\n
もし代わりに例外が発生した場合(例:*「Both Resenha and Voice tables exist. Nothing was changed.」*)、停止してメッセージをここに貼り付けてください。スクリプトは意図的に安全に設計されており、その場合は何も変更しません。

**終了して再構築します。**

\q
exit


その後、ホストに戻って:

./launcher rebuild app # シングルコンテナ
./launcher rebuild web_only # 2コンテナ構成(もちろんbootstrap経由でも可)


再構築を2回行う必要がある場合があります。1回目で半端に適用されたマイグレーション状態を完了させ、2回目で完全にクリーンに完了します。