Incompatibilidade de versão do pg_dump no Debian

8

Estou executando o PostgreSQL no Debian Unstable / Sid. Eu tenho as versões atuais (9.1) de postgresql, postgresql-client, postgresql-client-common(143) instalado.

O problema que estou tendo está tentando executar pg_dump. Estou recebendo este erro:

pg_dump: server version: 9.1.9; pg_dump version: 9.0.6
pg_dump: aborting because of server version mismatch

Não consigo descobrir como obter uma versão mais recente do pg_dump. Parece vir do postgresql-client-commonpacote e estou tentando executá apt-get --reinstall-lo, mas isso não me trouxe uma versão mais recente do pg_dump.

Como faço para resolver isso? Ou onde posso encontrar um pacote com uma versão mais recente pg_dump?

supercheetah
fonte
Você percebe que este é o par para o curso desde que você está executando o Debian Sid? É instável. O que which pg_dumpte mostra? Só para confirmar que é de fato a versão empacotada e não outra.
slm
Sim, eu verifiquei isso. Está mostrando /usr/bin/pg_dumpe dpkg -S /usr/bin/pg_dumpme dá postgresql-client-common: /usr/bin/pg_dump.
Supercheetah 25/05
Confira minha resposta, veja se isso ajuda.
slm

Respostas:

3

Par de opções.

Faça o download do .deb 9.1 no site do Postgres

Dê uma olhada nesta página intitulada: Linux downloads (Debian) - PostgreSQL . Você pode fazer o download de um .deb atualizado diretamente do site ou apontar novamente para o repositório e executar um comando como este:

apt-get install postgresql-9.1

Backports do Debian

Você pode encontrar versões específicas aqui, http://backports.debian.org/ .

Use uma versão genérica

Você pode baixar uma compilação binária do PostgreSQL e instalá-la em seu diretório pessoal ou /optpor exemplo.

Faça o download de um dos pré-builds para uso corporativo

Não tenho muita experiência com isso, mas você pode fazer o download de um desses semelhante a uma versão genérica e usar o cliente a partir da instalação, como é, despejar seu banco de dados.

Pacotes de distribuição cruzada

Você pode fazer o download de pacotes que foram construídos para que não sejam de distribuição independente. Acabei de baixar a versão 9.1.9 e ela inclui a pg_dumpferramenta.

O software é fornecido como .rpm ou .deb e é instalado em /opt/postgres/9.1. Especificamente, a pg_dumpferramenta é fornecida aqui: /opt/postgres/9.1/bin/pg_dump.

slm
fonte
A versão do PostgreSQL não é realmente o problema. É a versão pg_dumpantiga e incompatível. Existe algum lugar que eu possa encontrar especificamente isso?
Supercheetah 25/05
Eu acho que está incluído nesses pacotes. Gostaria apenas de baixar um dos pré-builds para a versão específica e usar o pg_dumpcomando de lá. Eles não deveriam ter que ser instalados, apenas desmarcados em um diretório. Pode ser necessário definir uma variável de ambiente para apontar para um diretório de biblioteca, mas deve ser bastante simples.
slm
4

Outra opção, que pode ser adequada para você, é desinstalar a versão paralela antiga:

no debian / ubuntu:

sudo apt-get remove postgresql-8.4
sudo apt-get remove postgresql-client-8.4

Isso preserva a versão posterior (por exemplo, 9.1), removendo apenas as bibliotecas mais antigas do cliente e servidor 8.4.

David Thomas
fonte
4

No meu caso, eu tinha dois conjuntos de bancos de dados, alguns rodando na versão antiga do Postgresql 8.4 e outros rodando na versão 9.1. O que eu fiz foi localizar pg_dumpna máquina Linux usando o locatecomando abaixo

$ locate pg_dump

/usr/bin/pg_dump
/usr/bin/pg_dumpall
/usr/lib/postgresql/8.4/bin/pg_dump
/usr/lib/postgresql/8.4/bin/pg_dumpall
/usr/lib/postgresql/9.1/bin/pg_dump
/usr/lib/postgresql/9.1/bin/pg_dumpall

Como o padrão /usr/bin/pg_dumpé o Postgresql versão 8.4, eu apenas especifiquei /usr/lib/postgresql/9.1/bin/pg_dumpna linha de comando ao descarregar dos bancos de dados 9.1, que são executados em uma porta diferente e funcionou.

$ /usr/lib/postgresql/9.1/bin/pg_dump -p 5434
Erick
fonte
2

Além das respostas acima, você também pode informar pg_dumpe outros comandos, qual versão usar através da clusteropção Por exemplo,

$pg_dump --cluster 9.1/main

terá como alvo a versão 9.1.

Note que isso faz uso do pg_wrapper, que vem postgresql-commone funciona no Ubuntu (Debian). Observe também que o cluster ( mainno exemplo) pode ser diferente na sua configuração.

Mais informações pg_wrapperpodem ser encontradas nesta resposta do DBA .

Dennis
fonte
0

Encontrei o mesmo problema hoje e a resposta de Erick parece ser mais precisa. É provável que o problema tenha versões diferentes do postgresql-client e pg_dump esteja apenas usando o cliente mais antigo.

Você pode resolver isso usando o caminho completo, como ele descreveu, mas achei uma solução mais fácil remover o pacote postgresql-client-common (que remove todos os clientes) e reinstalar o postgresql-client-9.3. Isso deixa você com apenas as versões mais recentes do pg_dump, que provavelmente é o que você deseja.

skylar
fonte