k8sクラスターでの新規起動時のマイグレーションエラー

こんにちは!

Kubernetes クラスター上で最新の Discourse を実行しており、起動時に以下のエラーが繰り返し発生します。

    ERROR:  relation "translation_overrides" does not exist at character 454
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

これは初期セットアップやデータベースマイグレーションに関連しているのではないかと推測していますが、なぜこのような現象が継続して発生するのか、ご存知の方がいれば教えていただけますでしょうか。

ローカル環境では minikube を使用しており、エラーログは PostgreSQL のポッドから取得しています。
使用している Discourse イメージ:bitnami/discourse:latest (https://github.com/bitnami/bitnami-docker-discourse)
使用している PostgreSQL イメージ: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 はすでに最新互換バージョンです

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:  文字位置 454 で relation "translation_overrides" が存在しません
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

警告: oid 19 の型 "name" に対して型キャストが定義されていません。将来の変更に対して安全であるために、この型を明示的に TEXT にキャストしてください。
> テーマとカラースキームのシード処理中
I, [2021-05-27T10:53:49.976589 #1]  INFO -- : == 20000225050318 AddSchemaMigrationDetails: migrating ========================
...

念のため、これは標準インストールとして、新たに(ARM)インストールした際に本日入手したものです。エラーと表示されていますが、インストールの進行は妨げられていないようです。

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 のパスワードを長くしたところ、解消されました。偶然かもしれませんが。