Travis 构建失败:posts.cached_version 不存在

我有 3 个插件正在进行正式的 Travis 构建,它们从昨天开始全部失败。它们都出现如下错误,而我不明白这个问题怎么会是由插件引起的:

2020-05-01 00:29:58.212 UTC [334] ERROR:  column posts.cached_version does not exist at character 193
2020-05-01 00:29:58.212 UTC [334] HINT:  Perhaps you meant to reference the column "posts.baked_version".
2020-05-01 00:29:58.212 UTC [334] STATEMENT:  SELECT "posts"."id", "posts"."user_id", "posts"."topic_id", "posts"."post_number", "posts"."raw", "posts"."cooked", "posts"."created_at", "posts"."updated_at", "posts"."reply_to_post_number", "posts"."cached_version", "posts"."reply_count", "posts"."quote_count", "posts"."deleted_at", "posts"."off_topic_count", "posts"."like_count", "posts"."incoming_link_count", "posts"."bookmark_count", "posts"."score", "posts"."reads", "posts"."post_type", "posts"."vote_count", "posts"."sort_order", "posts"."last_editor_id", "posts"."hidden", "posts"."hidden_reason_id", "posts"."notify_moderators_count", "posts"."spam_count", "posts"."illegal_count", "posts"."inappropriate_count", "posts"."last_version_at", "posts"."user_deleted", "posts"."reply_to_user_id", "posts"."percent_rank", "posts"."notify_user_count", "posts"."like_score", "posts"."deleted_by_id" FROM "posts" WHERE ("posts"."deleted_at" IS NULL) AND 1=0
PG::UndefinedColumn: ERROR:  column posts.cached_version does not exist
LINE 1: ...ts"."updated_at", "posts"."reply_to_post_number", "posts"."c...

我刚刚升级了一个站点,一切正常,所以这显然不是影响正常站点运行的问题。

我刚刚又试了一次(已经过了 14 个小时!),看起来问题依然存在。我是否需要更新某些内容?

2 个赞

所以你指的是这个吗?我们是否移除了该列?我记得 @sam 最近移除了一些列。

多年前

这些插件中有非官方的吗?您是否在安装旧版本的日历?

它们都是非官方的,否则我就不会测试它们了。:wink:

抱歉如果之前表述不清。

这些插件至少已经顺利通过测试数周了。之前有一段时间它们曾连续几天测试失败,但几天后又恢复正常。

据我所知,它们都没有对日历进行任何操作。如果你感兴趣,可以看看这个插件,它非常简单。

1 个赞

它们中有进行迁移的吗?

1 个赞

不,我完全不知道如何让他们执行迁移。:wink:

所以,情况好转了。14 小时前,https://travis-ci.org/ 重新运行了我的自定义插件,全部通过。我并没有做任何更改。这种情况至少发生过一次:Travis 构建失败,几天后它们又自动通过了,无需我采取任何行动。

3 个赞

在使用 discourse-ratings 插件配合原生开发环境运行迁移时,我遇到了同样的问题。我没有看到任何明确请求 cached_version 列的代码。

提交哈希:093ee1d80c269afd00ba1341a3e71eb97e4ce7f1

我运行了 RAILS_ENV=test rake db:drop db:create db:migrate,因此数据库中不应存在任何数据。

这是出问题的行:

1 个赞

好的,这是我们成功的方法。我们在迁移前对相关表调用了 reset_column_information。不知何故,cached_version 列在架构缓存中被“缓存”了 ;)。此外,这似乎是在 test 环境中特有的问题。

3 个赞