Backups não funcionam mais para um banco de dados postgres 16 devido a este commit que instala postgresql-client-${PG_MAJOR} em vez de postgresql-client
Isso está resolvendo um problema? O cliente psql fornecido pelo sistema operacional não estava funcionando bem com todas as versões do postgres?
Fiquei surpreso que este cliente estivesse usando PG16 em um banco de dados Digital Ocean, mas pensei que sabia que parte do hospedagem CDCK estava usando PG15 agora.
Existe alguma maneira melhor de obter um backup funcional do que algo como isto:
Como o pg_dump é usado para transferir dados para versões mais recentes do PostgreSQL, a saída do pg_dump pode ser esperada para carregar em versões de servidor PostgreSQL mais novas que a versão do pg_dump. O pg_dump também pode extrair de servidores PostgreSQL mais antigos que sua própria versão. (Atualmente, servidores a partir da versão 9.2 são suportados.) No entanto, o pg_dump não pode extrair de servidores PostgreSQL mais novos que sua própria versão principal; ele se recusará a tentar, em vez de arriscar fazer uma extração inválida. Além disso, não é garantido que a saída do pg_dump possa ser carregada em um servidor de uma versão principal mais antiga — nem mesmo se a extração foi feita de um servidor dessa versão. Carregar um arquivo de extração em um servidor mais antigo pode exigir a edição manual do arquivo de extração para remover a sintaxe não compreendida pelo servidor mais antigo.
Oops. E eu pensei que tinha lido o PR. Dado que sou falante nativo de inglês com um PhD, você pensaria que eu poderia fazer melhor.
Não. Não posso, já que é isso que constrói a imagem base.
Então, parece que minha correção é tão boa quanto pode ser, embora se eu fosse mais esperto, eu removeria as coisas do apt que eu puxo com o apt-get update.
Imagino que outros terão esse problema, pois muitas vezes é difícil convencer vários humanos e sistemas de que você quer PG13 em vez de algo mais recente. E parece que faz muito tempo que alguém que sabe disse que o Discourse estava funcionando com PG15.
(Vejo que minha instalação comum está usando a versão 13, então presumo que esta situação seja um pouco especial, embora talvez não terrivelmente rara.)
Olá a todos, deparei-me com este problema hoje. O sintoma foi que estávamos recebendo alertas há cerca de 6 dias de que os backups estavam falhando, e as linhas de log principais pareciam ser:
[2025-06-14 03:30:20] pg_dump: error: aborting because of server version mismatch
[2025-06-14 03:30:20] pg_dump: detail: server version: 16.9; pg_dump version: 15.12 (Debian 15.12-1.pgdg120+1)
Eu executo o Discourse no Ubuntu rodando em um droplet da Digital Ocean, usando o guia de instalação recomendado. Mas eu uso o banco de dados Managed Postgres da Digital Ocean em vez de um contêiner postgres. Olhando para o meu banco de dados, ele está rodando pg 16. Não acho que eles o atualizaram recentemente (e eu não esperaria que uma atualização de versão principal fosse automática de qualquer maneira), mas enviei um e-mail para o suporte deles para verificar.
De qualquer forma, minha pesquisa me levou a esta página. Eu não tinha certeza onde colocar o YAML que @pfaffman postou, então executei os comandos manualmente e pensei em compartilhar para qualquer outra pessoa que se depare com isso:
cd /var/discourse
launcher enter app
apt list --installed | grep postgres # para confirmar que a versão atualmente instalada é 15
Isso parece ter resolvido o problema temporariamente, mas como @pfaffman apontou, eu espero que da próxima vez que eu atualizar o discourse, ele volte para postgresql-client-15, e os backups pararão de funcionar novamente, exigindo a intervenção manual acima.
Existe alguma solução para este problema além de ter que repetir essas etapas toda vez que eu atualizar o discourse?
Obrigado, mas não tenho certeza se entendi. Tenho a impressão de que o YAML que você mencionou na postagem original acima era simplesmente uma forma de reduzir os comandos do punhado que postei acima para um único, mas que você ainda tinha que executá-lo manualmente cada vez que atualiza o Discourse. Interpretei mal?