在 Kubernetes 集群中第一次启动时出现的迁移错误

你好!

我在 Kubernetes 集群上运行最新版本的 Discourse,启动时一直收到以下错误:

    ERROR:  relation "translation_overrides" does not exist at character 454
STATEMENT:  SELECT a.attname, format_type(a.atttypid, a.atttypmod),
 \t       pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod,
 \t       c.collname, col_description(a.attrelid, a.attnum) AS comment
 \t  FROM pg_attribute a
 \t  LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum
 \t  LEFT JOIN pg_type t ON a.atttypid = t.oid
 \t  LEFT JOIN pg_collation c ON a.attcollation = c.oid AND a.attcollation <> t.typcollation
 \t WHERE a.attrelid = '"translation_overrides"'::regclass
 \t   AND a.attnum > 0 AND NOT a.attisdropped
 \t ORDER BY a.attnum

我猜测这与初始设置和数据库迁移有关,但不知道是否有人知道具体原因。

本地环境使用 minikube 运行,错误日志来自 pgsql Pod。
使用的 Discourse 镜像为 → bitnami/discourse:latest(https://github.com/bitnami/bitnami-docker-discourse)
Postgres 镜像为 → postgres:11.9

谢谢,祝好!

在这种情况下,我认为你应该向他们提出这个问题。鉴于你使用的是不受支持的安装方式,在这里找到解决方案的可能性不大。

创建问题的合适地点可能是:

https://github.com/bitnami/bitnami-docker-discourse/issues

或者,你可以将安装方式更改为官方安装(尽管我不确定是否可以在 k8s 集群中运行官方安装)。

感谢您的帮助,非常感谢 :slight_smile:

大家好,我们一直在调查 Bitnami 环境中的此问题,并已将其追溯至 Discourse 源代码。我们使用官方的 standalone.yml 模板 在原生 Discourse 启动器中也成功复现了该问题:

$ ./launcher rebuild app
...
I, [2021-05-27T10:53:27.612150 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake plugin:pull_compatible_all'
I, [2021-05-27T10:53:30.072954 #1]  INFO -- : docker_manager is already at latest compatible version

I, [2021-05-27T10:53:30.073194 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'

2021-05-27 10:53:32.977 UTC [4354] discourse@discourse ERROR:  relation "translation_overrides" does not exist at character 454
2021-05-27 10:53:32.977 UTC [4354] discourse@discourse STATEMENT:  SELECT a.attname, format_type(a.atttypid, a.atttypmod),
	       pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod,
	       c.collname, col_description(a.attrelid, a.attnum) AS comment
	  FROM pg_attribute a
	  LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum
	  LEFT JOIN pg_type t ON a.atttypid = t.oid
	  LEFT JOIN pg_collation c ON a.attcollation = c.oid AND a.attcollation <> t.typcollation
	 WHERE a.attrelid = '"translation_overrides"'::regclass
	   AND a.attnum > 0 AND NOT a.attisdropped
	 ORDER BY a.attnum

Warning: no type cast defined for type "name" with oid 19. Please cast this type explicitly to TEXT to be safe for future changes.
> Seeding theme and color schemes
I, [2021-05-27T10:53:49.976589 #1]  INFO -- : == 20000225050318 AddSchemaMigrationDetails: migrating ========================
...

请注意,我今天在全新的 (ARM) 安装上遇到了这个问题,作为标准安装,尽管它显示为 ERROR,但似乎并未阻止安装。

I, [2025-02-24T17:48:39.792821 #1]  INFO -- : cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
2025-02-24 17:48:43.887 UTC [389] discourse@discourse ERROR:  relation "translation_overrides" does not exist at character 523
2025-02-24 17:48:43.887 UTC [389] discourse@discourse STATEMENT:  SELECT a.attname, format_type(a.atttypid, a.atttypmod),
	       pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod,
	       c.collname, col_description(a.attrelid, a.attnum) AS comment,
	       attidentity AS identity,
	       attgenerated as attgenerated
	  FROM pg_attribute a
	  LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum
	  LEFT JOIN pg_type t ON a.atttypid = t.oid
	  LEFT JOIN pg_collation c ON a.attcollation = c.oid AND a.attcollation <> t.typcollation
	 WHERE a.attrelid = '"translation_overrides"'::regclass
	   AND a.attnum > 0 AND NOT a.attisdropped
	 ORDER BY a.attnum
	
> Seeding theme and color schemes
I, [2025-02-24T17:49:11.765841 #1]  INFO -- : == 20000225050318 AddSchemaMigrationDetails: migrating ========

我不知道这是否有意义。但我在使用 bitnami chart 在 k8s 中设置 discourse 时遇到了类似的错误,当我将 postgres 密码设置得更长时,它就消失了。不过这可能只是巧合。