Problema com restauração: \"comando inválido \\restrict\"

Estou com problemas para fazer uma restauração de “Discourse 3.5.0.beta9-dev - 04dbc622ab1e0197d16703ba47cf005ec93697ee” para a versão atual (6f06709643fa5e2253606c46f79d089ca3393ac9)

[STARTED]
'system' iniciou a restauração!
Marcando restauração como em execução...
Verificando se /home/pfaffman/src/discourse-repos/discourse/tmp/restores/default/2025-10-28-201139 existe...
Baixando arquivo para o diretório tmp...
Extraindo arquivo de dump...
Validando metadados...
  Versão atual: 20251024020353
  Versão restaurada: 20250724012518
Habilitando modo somente leitura...
Pausando sidekiq...
Aguardando até 60 segundos para o Sidekiq terminar de executar trabalhos...
Criando funções ausentes no esquema discourse_functions...
Restaurando arquivo de dump... (isso pode levar um tempo)
comando inválido \restrict
EXCEÇÃO: psql falhou: comando inválido \restrict

Se eu remover esses comandos printf do database_restorer, funciona:

      <<~CMD
        (
          printf '%s\n' "\\\restrict #{nonce}"
          #{sed_command}
          printf '%s\n' "\\\unrestrict #{nonce}"
        ) | #{self.class.psql_command} 2>&1
      CMD

Parece que este commit.

Na versão em que o backup foi feito (um contêiner docker cdck) eu tenho isto:

PostgreSQL 15.13 (Debian 15.13-1.pgdg120+1) on x86_64-pc-linux-gnu, compilado por gcc (Debian 12.2.0-14) 12.2.0, 64-bit

e é aqui que estou tentando restaurar (site de desenvolvimento rodando pg15 no bare metal):

PostgreSQL 15.13 (Ubuntu 15.13-1.pgdg22.04+1) on x86_64-pc-linux-gnu, compilado por gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, 64-bit

Eu não entendo o que este código está tentando fazer, então estou apenas confuso.

Você precisa estar no PG 15.14 e precisa garantir que todas as suas instâncias estejam nessa versão. Isso corrige um grande problema de segurança.

3 curtidas

Aha. Essa é uma explicação muito simples.

Obrigado. Vou cuidar disso.

2 curtidas