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 ya está en la última versión 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 relación "translation_overrides" no existe en el carácter 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
Advertencia: no se definió un cast de tipo para el tipo "name" con oid 19. Por favor, castee este tipo explícitamente a TEXT para estar seguro ante cambios futuros.
> Sembrando temas y esquemas de color
I, [2021-05-27T10:53:49.976589 #1] INFO -- : == 20000225050318 AddSchemaMigrationDetails: migrando ========================
...
Esto también ocurre en una instalación oficial simple de discourse_docker, utilizando una prueba de restauración automatizada a través de la pipeline cada mañana de la semana. Este error similar apareció repentinamente en la pipeline fallida.
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 causa raíz fue una discrepancia de versiones entre la copia de seguridad restaurada y el código del contenedor.
El código más reciente de Discourse incluye un modelo que hace referencia a translation_overrides, pero la base de datos de producción (proveniente de la copia de seguridad) está en una versión anterior donde esta tabla aún no existe o tiene un nombre diferente.
Lo que funcionó para mí fue reconstruir primero (lo que crea el esquema desde cero) y luego restaurar la copia de seguridad. El proceso de restauración utiliza la función de restauración integrada de Discourse, que elimina y recrea adecuadamente la base de datos.