pg_dump incompatibilidade de versão 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) instaladas.

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 de pg_dump . Parece que está vindo do pacote postgresql-client-common , e estou tentando executar apt-get --reinstall nele, mas isso não me trouxe uma versão mais nova do pg_dump.

Como eu trabalho com isso? Ou onde posso encontrar um pacote com uma versão mais recente de pg_dump ?

    
por supercheetah 25.05.2013 / 20:34

5 respostas

3

Algumas opções.

Baixe o arquivo .deb 9.1 do site do Postgres

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

apt-get install postgresql-9.1

Backports da Debian

Você pode encontrar versões específicas aqui, link .

Use uma versão genérica

Você pode fazer o download de uma compilação binária do PostgreSQL e instalá-la no seu diretório home ou /opt , por exemplo .

Faça o download de uma das pré-compilações para uso empresarial

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

Pacotes de distribuição cruzada

Você pode fazer o download dos pacotes que foram criados para que sejam independentes da distribuição. Acabei de baixar a versão 9.1.9 e ela inclui a ferramenta pg_dump .

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

    
por 25.05.2013 / 21:05
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.

    
por 04.07.2014 / 05:52
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_dump na máquina Linux usando o comando locate 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 /usr/bin/pg_dump padrão é para a versão 8.4 do Postgresql, acabei de especificar /usr/lib/postgresql/9.1/bin/pg_dump da linha de comando ao despejar de bancos de dados 9.1 que são executados em uma porta diferente e funcionaram.

$ /usr/lib/postgresql/9.1/bin/pg_dump -p 5434
    
por 13.06.2013 / 14:18
2

Além das respostas acima, você também pode informar pg_dump e outros comandos, qual versão usar por meio da opção cluster . Por exemplo,

$pg_dump --cluster 9.1/main

segmentará a versão 9.1.

Observe que isso faz uso de pg_wrapper , que vem com postgresql-common e funciona em < strong> Ubuntu (Debian). Observe também que o cluster ( main no exemplo) pode ser diferente em sua configuração.

Mais informações sobre pg_wrapper podem ser encontradas nesta resposta do DBA .

    
por 22.04.2014 / 15:04
0

Eu me deparei com o mesmo problema hoje e a resposta de Erick parece ser mais precisa. O problema é que você tem versões diferentes do postgresql-client e o pg_dump está apenas usando o cliente mais antigo.

Você pode resolver isso usando o caminho completo como ele descreveu, mas descobri que 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, o que provavelmente quer que você queira.

    
por 28.02.2014 / 07:06