私にも同じ問題が発生しました。そのスクリプトを実行するには、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回目で完全にクリーンに完了します。