我也遇到过这个问题——而且运行那个脚本需要一些指导,因为对于不太专业的系统管理员来说,这并不容易!
以下是为其他人准备的总结:
对于在标准 Docker 安装中遇到此问题的用户,以下是实际运行上述脚本的方法。
获取 shell 并打开 psql。
-
单容器:
cd /var/discourse ./launcher start app ## 仅在你已经经历过一次失败的重新构建时才需要 ./launcher enter app su -c 'psql discourse' postgres -
双容器配置:
cd /var/discourse ./launcher enter data su -c 'psql discourse' postgres
你应该会看到一个 discourse=# 提示符。如果不确定,请运行 \conninfo。
运行脚本。
在提示符处粘贴整个 DO $$ ... $$; 来自 nat 上方帖子的代码块,然后按 Enter。成功运行会打印类似以下内容的通知:
NOTICE: Renamed resenha_rooms to voice_rooms
NOTICE: Renamed resenha_room_memberships to voice_room_memberships
...
如果它抛出一个异常(例如 “Both Resenha and Voice tables exist. Nothing was changed.”),请停止并将消息粘贴回这里——该脚本是刻意设计为安全的,在这种情况下不会更改任何内容。
退出并重新构建。
\q
exit
然后回到主机上:
./launcher rebuild app # 单容器
./launcher rebuild web_only # 双容器(当然也可以通过 bootstrap 完成)
你可能需要两次重新构建——第一次完成半应用的迁移状态,第二次则干净地完成。