Problemas com a atualização do postgres 15

Olá,
Eu iniciei uma atualização depois de provavelmente um ano, o que levou a migração do pg 13 para o 15.

Estou tentando executar o comando fornecido com meu próprio LC_LANG, mas não funciona, recebo FATAL: data directory “/shared/postgres_data” does not exist. E, de fato, ele não existe… Alguém tem alguma ideia?

Deveria haver um /shared/postgres_old.

Mudar seu LC_LANG é provavelmente uma má ideia.

Eu, na verdade, tive o mesmo erro que você, “/bin/bash: warning: setlocale: LC_ALL: cannot change locale”, quando tentei meu launch rebuild app, o que me levou a este post. Você conseguiu resolver no final? Os comandos docker run apenas me levaram a mais problemas, como afirmado acima.

Adicionei um mapeamento \-v /var/discourse/shared/standalone:/shared e agora avancei um pouco. É estranho que não esteja lá, no entanto. O problema pode ser que meu “app” ainda esteja preso em alguma versão de 2024 e o “rebuild” não funcione. Apenas um palpite…

Então eu tinha isto no meu app.yml e funcionava bem:

env:
  LC_ALL: fr_BE.UTF-8
  LANG: fr_BE.UTF-8
  LANGUAGE: fr_BE.UTF-8

Eu quis dizer LANG e não LC_LANG. O problema é que se eu reverter para qualquer outra coisa agora, é “tarde demais”. Eu tentei en_US.UTF_8 e nada, o rebuild sempre falha.

Se você não tem um backup atual e não consegue reiniciar seu contêiner antigo, eu mudaria para o modelo PG13 e obteria uma configuração funcional, depois faria um backup, e então configuraria um novo servidor e restauraria o backup lá. Você pode configurá-lo com a linguagem que quiser quando for um banco de dados vazio e depois fazer a restauração (e talvez a linguagem seja convertida magicamente?).

Mover para um novo servidor garante que você não trave seu servidor existente.

1 curtida

Infelizmente, já estou em um estado travado. Eu tenho backups, mas não consigo restaurá-los, pois a mudança de versão é muito grande e há problemas de dependência com gems. Também não consigo voltar para a versão antiga, pois o launcher puxa automaticamente, o que é um pouco triste, na minha opinião.

Com LC_ALL, eu obtenho:

/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups.rb
/usr/local/bin/pups --stdin
/bin/bash: warning: setlocale: LC_ALL: cannot change locale (fr_BE.UTF-8)
I, [2025-12-02T15:46:29.638999 #1]  INFO -- : Reading from stdin
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups/cli.rb:59:in `split': invalid byte sequence in US-ASCII (ArgumentError)

    split = conf.split("_FILE_SEPERATOR_")
                       ^^^^^^^^^^^^^^^^^^
    from /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups/cli.rb:59:in `run'
    from /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/bin/pups:9:in `<top (required)>'
    from /usr/local/bin/pups:25:in `load'
    from /usr/local/bin/pups:25:in `<main>'

bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
19a63b958021df0ecbc7e21bfea95f1c5ef7b039efd669b5d4af48b05d397a58

Se eu remover o LC_ALL, então o ./launcher rebuild app para em:

Performing Consistency Checks

Checking cluster versions                                   ok
Checking database user is the install user                  ok
Checking database connection settings                       ok
Checking for prepared transactions                          ok
Checking for system-defined composite types in user tables  ok
Checking for reg* data types in user tables                 ok
Checking for contrib/isn with bigint-passing mismatch       ok
Checking for user-defined encoding conversions              ok
Checking for user-defined postfix operators                 ok
Checking for incompatible polymorphic functions             ok
Checking for not-null constraint inconsistencies            ok
Creating dump of global objects                             ok
Creating dump of database schemas                           ok

lc_collate values for database “template1” do not match:  old “fr_BE.UTF-8”, new “en_US.UTF-8”

Com a linha docker “manual” mencionada na postagem principal, eu também tive que vincular coisas em /etc/postgresql para /var/… pois alguns arquivos estavam faltando e, finalmente, obtive o mesmo erro que acima.

Vou tentar uma nova instalação e restaurar lá.

Duvido que seja verdade que a mudança de versão seja muito grande. Você configurou um novo servidor e tentou restaurar esse backup? Eu restaurei um backup vários anos mais antigo do que o site onde foi restaurado. Tenho certeza de que funcionará. Eu movo sites para novos servidores várias vezes por mês. A única vez que houve um problema foi quando havia um índice corrompido, o que não vejo há um bom tempo.

Você tentou renomear postgres_old para postgres_data e

./launcher start app

Ah. Essa é uma boa ideia! É por isso que eu deveria ler a postagem inteira antes de responder. :slight_smile:

Confirmo que uma nova instalação também falha com LC_ALL definido, da mesma forma que mostrado acima (\FILE_SEPERATOR\ …). No entanto, sem LC_ALL está tudo bem.

Consegui restaurar meu backup com uma nova instalação limpa na última versão master, obrigado. Resolver esses problemas continuará sendo um mistério…

1 curtida

Ótimo!

Movi isto para um novo tópico. Se uma das minhas respostas foi a solução, por favor, marque-a como tal para permitir que este tópico seja fechado automaticamente.

2 curtidas