I have cloned master and in trying to run migrations i get this error:
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: relation “translation_overrides” does not exist
I see that a topic was created for this last November and seemingly fixed so i’m wondering what coudl be the cause?
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: relation "translation_overrides" does not exist
remote: LINE 5: WHERE a.attrelid = '"translation_overrides"':...
remote: ^
remote: : SELECT a.attname, format_type(a.atttypid, a.atttypmod),
remote: pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
remote: FROM pg_attribute a LEFT JOIN pg_attrdef d
remote: ON a.attrelid = d.adrelid AND a.attnum = d.adnum
remote: WHERE a.attrelid = '"translation_overrides"'::regclass
remote: AND a.attnum > 0 AND NOT a.attisdropped
remote: ORDER BY a.attnum
PG::UndefinedTable: ERROR: relation "translation_overrides" does not exist
remote: LINE 5: WHERE a.attrelid = '"translation_overrides"':...
production but getting it to run on heroku (i realise that heroku is not the ‘supported’, ‘recommended’ setup ). despite that, do you have any ideas? thanks a lot
$ ./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 est déjà à la dernière version compatible
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: la relation "translation_overrides" n'existe pas au caractère 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
Avertissement : aucun cast de type n'est défini pour le type "name" avec l'oid 19. Veuillez caster explicitement ce type en TEXT pour être sûr face aux changements futurs.
> Initialisation du thème et des schémas de couleurs
I, [2021-05-27T10:53:49.976589 #1] INFO -- : == 20000225050318 AddSchemaMigrationDetails: migration en cours ========================
...
Cela se produit également lors d’une installation officielle simple de discourse_docker, en utilisant un test de restauration automatisé via un pipeline chaque matin de la semaine. Cette erreur similaire est apparue soudainement dans le pipeline échoué.
I, [2026-05-20T07:59:01.413128 #1] INFO -- : > cd /var/www/discourse && su discourse -c 'bundle
exec rake db:migrate'
2026-05-20 07:59:09.214 UTC [1576] discourse@discourse ERROR: relation "translation_overrides" does not exist at character 523
2026-05-20 07:59:09.214 UTC [1576] 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
2026-05-20 07:59:13.167 UTC [1627] discourse@discourse ERROR: schema "discourse_functions" already exists
2026-05-20 07:59:13.167 UTC [1627] discourse@discourse STATEMENT: CREATE SCHEMA discourse_functions;
psql:/var/www/discourse/db/structure.sql:16: ERROR: schema "discourse_functions" already exists
rake aborted!
La cause racine était un décalage de version entre la sauvegarde restaurée et le code du conteneur.
Le code Discourse le plus récent contient un modèle faisant référence à translation_overrides, mais la base de données de production (issue de la sauvegarde) est sur une version antérieure où cette table n’existe pas encore ou porte un nom différent.
Ce qui a fonctionné pour moi, c’est de reconstruire d’abord (ce qui crée le schéma à partir de zéro), puis de restaurer la sauvegarde. Le processus de restauration utilise la fonctionnalité de restauration intégrée de Discourse, qui supprime et recrée correctement la base de données.