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-common
pacote 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
?
debian
postgresql
supercheetah
fonte
fonte
which pg_dump
te mostra? Só para confirmar que é de fato a versão empacotada e não outra./usr/bin/pg_dump
edpkg -S /usr/bin/pg_dump
me dápostgresql-client-common: /usr/bin/pg_dump
.Respostas:
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:
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
/opt
por 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_dump
ferramenta.O software é fornecido como .rpm ou .deb e é instalado em
/opt/postgres/9.1
. Especificamente, apg_dump
ferramenta é fornecida aqui:/opt/postgres/9.1/bin/pg_dump
.fonte
pg_dump
antiga e incompatível. Existe algum lugar que eu possa encontrar especificamente isso?pg_dump
comando 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.Outra opção, que pode ser adequada para você, é desinstalar a versão paralela antiga:
no debian / ubuntu:
Isso preserva a versão posterior (por exemplo, 9.1), removendo apenas as bibliotecas mais antigas do cliente e servidor 8.4.
fonte
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 olocate
comando abaixoComo o padrão
/usr/bin/pg_dump
é o Postgresql versão 8.4, eu apenas especifiquei/usr/lib/postgresql/9.1/bin/pg_dump
na linha de comando ao descarregar dos bancos de dados 9.1, que são executados em uma porta diferente e funcionou.fonte
Além das respostas acima, você também pode informar
pg_dump
e outros comandos, qual versão usar através dacluster
opção Por exemplo,terá como alvo a versão 9.1.
Note que isso faz uso do
pg_wrapper
, que vempostgresql-common
e funciona no Ubuntu (Debian). Observe também que o cluster (main
no exemplo) pode ser diferente na sua configuração.Mais informações
pg_wrapper
podem ser encontradas nesta resposta do DBA .fonte
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.
fonte