PG Error on rebuild - column "token" of relation "email_tokens" does not exist

出现以下错误:

2021-12-13 08:57:12.809 UTC [902] discourse@discourse ERROR:  column "token" of relation "email_tokens" does not exist
2021-12-13 08:57:12.809 UTC [902] discourse@discourse STATEMENT:  ALTER TABLE email_tokens ALTER COLUMN token DROP NOT NULL

rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

PG::UndefinedColumn: ERROR:  column "token" of relation "email_tokens" does not exist

与此相关?:

1 个赞

我们也有这个问题。

目前,我们在重建失败后成功地使用 ./launcher start app 启动了旧容器,但我们不知道数据库是否处于一致状态,因为失败发生在迁移过程中。

为了让我们安心,是否知道像这样的故障发生时,数据库迁移是否会完全回滚?

1 个赞

我也是,正在回滚 8 小时前的备份。

听起来像个 bug。我猜你没有设置 SKIP_POST_DEPLOYMENT_MIGRATIONS,对吧?

或者,也许作为一种变通方法,你可以在 app.yml 中将其设置为 1,运行重建,然后要么将其改回并再次升级,要么在容器内将其设置为零并在命令行上进行迁移。

感谢 Jay 的建议,但我似乎没有在 app.yml 中设置它。

1 个赞

请有此问题的人尝试在 rails 控制台中运行此命令,并分享您的结果:

./launcher enter app
rails c

DB.query "SELECT table_schema, table_name, column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='email_tokens' AND column_name='token';"
1 个赞

请您看一下
似乎每次重建都有这个错误

1 个赞

好的,感谢 @aksoforever - 这证实了我的猜测。我认为这个 PR 应该能解决这个问题:

7 个赞

重建后仍然出现错误

看起来我需要再次重建,我来试试。

该提交将在 10-15 分钟内到达 tests-passed 分支。完成后我会在这个频道通知。

3 个赞

Ok,该提交现已部署到 tests-passed 环境。

cc @aksoforever @merefield @alexsts @AquaL1te @pfaffman @TechGeek - 现在应该可以重新构建了。抱歉造成了干扰!

7 个赞

是的,完美运行。谢谢你,大卫。
非常有帮助。

5 个赞

此主题已在 15 小时后自动关闭。不再允许回复。

干得好!谢谢你,大卫。

1 个赞