更新 = ☠

如果其他人遇到类似问题,这里有几点建议。

首先,不要运行 ./launcher cleanup,而是运行 ./launcher start app 来重启现有的容器。然后你就可以执行类似以下的操作:

./launcher enter app
su - postgres
psql discourse
drop table ...

如果没有容器可以进入并直接与 PostgreSQL 对话,你必须在容器构建期间完成,方法是在你的 app.yml 中添加类似以下内容:

hooks:
  after_postgres:
      - exec: /bin/bash -c 'sudo -u postgres psql discourse <<EOF "drop table summary_sections;"'
      - exec: /bin/bash -c 'sudo -u postgres psql discourse <<EOF "drop table theme_settings_migrations;"'

我不知道为什么那两个表会被创建,导致迁移出现问题,但这是解决方法。更奇怪的是,数据库似乎被清空了,在我修复这个问题后,它变成了一个全新的数据库,所以它一定是在某个迁移过程中被意外停止了。

8 个赞