更新后出现未定义的列“boomarks.post_id”

在将我的 discourse 安装从 2.9.0.beta9 更新到 2.9.0.beta11 后,安装完全冻结了,因为所有列出主题的调用突然返回 column bookmarks.post_id does not exist

我已经追踪到导致此列被删除的提交是 f8939bd294ff6822a61fb653b44a4df351321f54,它从数据库中删除了该列。问题也发生在安全模式下,所以我认为插件不是罪魁祸首。

堆栈跟踪:

app/models/topic_list.rb:84:in `topics'
app/serializers/suggested_topics_mixin.rb:17:in `include_suggested_topics?'
(eval):6:in `_fast_attributes'
app/controllers/topics_controller.rb:1199:in `block (2 levels) in perform_show_response'
app/controllers/topics_controller.rb:1194:in `perform_show_response'
app/controllers/topics_controller.rb:169:in `show'
app/controllers/application_controller.rb:413:in `block in with_resolved_locale'
app/controllers/application_controller.rb:413:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:366:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/request_tracker.rb:202:in `call'
Failed to handle exception in exception app middleware : ActiveRecord::StatementInvalid : PG::UndefinedColumn: ERROR:  column bookmarks.post_id does not exist
LINE 1: ...marks\".\"bookmarkable_type\" FROM \"bookmarks\" WHERE \"bookmarks...\n```
任何帮助都将不胜感激。
1 个赞

我现在通过将列添加回数据库来修复它,但我认为应该修复根本原因 :grimacing:

如果您需要进一步的诊断,我很乐意再次删除该列

2 个赞

我感到非常困惑,这个列已经被忽略了很长时间了。

@martin 需要将其移除,我们不再使用它了。

您有自定义设置吗?是否涉及任何特殊插件?这个错误是迁移运行时发生的“过渡性”问题吗?(我预计在异常情况下通过 Web 界面进行实时更新时可能会出现此错误)

1 个赞

今天更新时遇到了同样的问题。重新添加 post_id 列有助于解决此问题。

步骤:

  1. 进入 discourse 容器
./launcher enter app
  1. 进入 psql
sudo -u postgres psql discourse
  1. bookmarks 表中重新添加 post_id
ALTER TABLE bookmarks ADD COLUMN post_id int;
2 个赞

我使用的是默认的 Docker 设置,并安装了一些插件,但在安全模式下也可以重现此问题。此外,堆栈跟踪中也没有明显引用插件的地方。

使用完全重建进行了更新,迁移过程中没有出现任何错误。还尝试重新运行迁移,但报告没有更改。

1 个赞

我很困惑……

你能试试

  1. 再次删除该列
  2. 重启你的容器 ./launcher restart app

错误是否仍然存在?

不需要添加该列。

1 个赞

我已经在第一次遇到错误时尝试过重启。为了确认,我再次重启了,但错误仍然存在。会不会是某个主题组件导致的问题?主题列表预览主题组件是我们实例和 krita-artists.org 之间的一个相似之处,我在 Oops. The software powering this discussion forum encountered an unexpected problem - #10 by raghukamath 中提到了这一点。

2 个赞

主题组件触发此问题的可能性非常小,您使用的插件的完整列表是什么?

您不介意再试一次吗?

1 个赞

我找到了问题 :partying_face: 果然是插件问题 :sweat_smile:

Topic List Previews (TLP) 的先前版本以插件形式分发,然后拆分为插件和主题组件。在此初始拆分期间,用户被指示从新分支加载插件。但是,随着时间的推移,该分支被放弃且不再维护。切换到维护的分叉后,一切都恢复正常了。

6 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.