Estou tentando despejar um banco de dados Postgresql usando a ferramenta pg_dump .
$ pg_dump books > books.out
Como sempre estou recebendo esse erro.
pg_dump: server version: 9.2.1; pg_dump version: 9.1.6
pg_dump: aborting because of server version mismatch
A --ignore-version
opção agora está obsoleta e realmente não seria uma solução para o meu problema, mesmo que tivesse funcionado.
Como posso atualizar o pg_dump para resolver esse problema?
postgresql
backup
pg-dump
postgresql-9.2
Chris Colla
fonte
fonte
Respostas:
Você pode instalar o PostgreSQL 9.2.1 na
pg_dump
máquina cliente ou apenas copiá-lo$PGHOME
da máquina servidor do PostgreSQL para a máquina cliente. Observe que não há necessidade deinitdb
um novo cluster na máquina cliente.Depois de concluir a instalação do software 9.2.1, lembre-se de editar algumas variáveis de ambiente em seu
.bash_profile
arquivo.fonte
Eu encontrei isso ao usar o Heroku no Ubuntu, e aqui está como eu o corrigi:
Adicione o repositório apt do PostgreSQL conforme descrito em " Downloads do Linux (Ubuntu) ". (Existem páginas semelhantes para outros sistemas operacionais.)
Atualize para a versão mais recente (9.3 para mim) com:
Recrie o link simbólico
/usr/bin
com:O número da versão no
/usr/lib/postgresql/...
caminho acima deve corresponder aoserver version
número no erro que você recebeu. Portanto, se o seu erro indicar,pg_dump: server version: 9.9
vincule-o a/usr/lib/postgresql/9.9/...
.fonte
Verifique as versões instaladas do pg_dump:
Minha saída foi:
Existem duas versões instaladas. Para atualizar o pg_dump com a versão mais recente:
Isso criará o link simbólico para a versão mais recente.
fonte
locate pg_dump
2>/dev/null
pois isso descartará o fluxo de ERRO em vez de imprimi-lo no console. Eu acho que se deve querer ver algum erro acontecendo, exceto alguns casos raros. Por exemplo, no meu caso, isso me lembra que eu não era root, deixando de ver alguns diretórios em que a versão mais recente do pg_dump foi instalada. Em geral, não remova erros.Macs têm um
/usr/bin/pg_dump
comando interno que é usado como padrão.Com a instalação do postgresql, você obtém outro binário em
/Library/PostgreSQL/<version>/bin/pg_dump
fonte
Você pode apenas localizar
pg_dump
e usar o caminho completo no comandoAgora basta usar o caminho da versão desejada no comando
fonte
sudo /usr/pgsql-<version>/bin/pg_dump <database-name> -U <username> -h localhost
Se você estiver no Ubuntu, poderá ter uma versão antiga do
postgresql-client
instalada. Com base nas versões da sua mensagem de erro, a solução seria a seguinte:fonte
Sempre que você atualiza ou reinstala uma nova versão do PostgreSQL, uma versão mais recente
pg_dump
é instalada.Deve haver um
PostgreSQL/bin
diretório em algum lugar do seu sistema, na versão mais recente do PostgreSQL que você instalou (9.2.1 é a mais recente) e tente executar apg_dump
partir de lá.fonte
Terminal.app
,find / -name pg_dump -type f 2>/dev/null
Para aqueles que executam o Postgres.app :
Adicione o seguinte código ao seu
.bash_profile
:Reinicie o terminal.
fonte
Para Macs com Homebrew. Eu tive esse problema ao buscar o db do Heroku. Corrigi-o apenas em execução:
fonte
Para usuários de mac, coloque no topo do arquivo .profile.
então corra
fonte
No Ubuntu, você pode simplesmente adicionar o repositório Apt mais recente e depois executar:
fonte
Como explicado, isso ocorre porque o seu postgresql está na versão antiga -> atualize-o para Mac via homebrew:
brew tap petere/postgresql
,brew install <formula>
(por exemplobrew install petere/postgresql/postgresql-9.6
:)Remova o postgre antigo:
brew unlink postgresql
brew link -f postgresql-9.6
Se ocorrer algum erro, não se esqueça de ler e seguir as instruções de preparação em cada etapa.
Verifique isso para mais: https://github.com/petere/homebrew-postgresql
fonte
Uma resposta alternativa que eu acho que ninguém mais cobriu.
Se você tiver vários clusters PG instalados (como eu), poderá visualizá-los
pg_lsclusters
.Você poderá ver a versão e o cluster na lista exibida.
A partir daí, você pode fazer o seguinte:
Obviamente, substitua a versão e o nome do cluster pelo apropriado para suas circunstâncias do que é retornado,
pg_lsclusters
separando a versão e o cluster por um /. Isso tem como alvo o cluster específico no qual você deseja executar.fonte
pg_dump
não estava trabalhando em um dos meus clusters? Acontece que ele estava usando a versão padrão do Postgresql, quando um dos meus clusters foi atualizado para uma versão mais recente. Especificando cluster, resolveu o problema.Para mim, o problema da atualização
psql
apt-get
não estava resolvendo as versões mais recentes, mesmo depoisupdate
. O seguinte funcionou.Ubuntu
Comece com a importação da chave GPG para pacotes PostgreSQL.
Agora adicione o repositório ao seu sistema.
Instale o PostgreSQL no Ubuntu
https://www.postgresql.org/download/linux/ubuntu/
fonte
Se você tiver o docker instalado, poderá fazer algo como:
$ docker run postgres:9.2 pg_dump books > books.out
Isso fará o download do contêiner Docker com o Postgres 9.2, será executado
pg_dump
dentro do contêiner e gravará a saída.fonte
A resposta parece boba, mas se você receber o erro acima e quiser executar o pg_dump para a versão anterior, vá para o diretório bin do postgres e digite
./pg_dump servername> out.sql ./ ignora a raiz e procura pg_dump no diretório atual
fonte
Eu tive o mesmo erro e foi assim que o resolvi no meu caso. Isso significa que sua versão do postgresql é 9.2.1, mas você iniciou o serviço postgresql da 9.1.6.
Se você executar
psql postgres
, verá:psql (9.2.1, server 9.1.6)
O que eu fiz para resolver esse problema é:
brew services stop [email protected]
brew services restart [email protected]
Agora execute
psql postgres
e você deve ter:psql (9.2.1)
Você também pode executar
brew services list
para ver o status do seu postgres.fonte
** após a instalação, a versão do postgres é correspondida (9.2) Crie um link simbólico ou novo atalho
** - em '/ usr / bin'
exemplo
- como chamar: new_pg_dump -h 192.168.9.88 -U postgres database
fonte
Tente isso:
fonte
Se o banco de dados estiver instalado em uma máquina diferente, é provável que tenha a versão correta do pg_dump instalada. Isso significa que você pode executar o comando pg_dump remotamente com o SSH:
ssh username@dbserver pg_dump books > books.out
Você também pode usar a autenticação de chave pública para execução sem senha. Passos para conseguir isso:
fonte
Bem, eu tive o mesmo problema, pois tenho duas versões do postgress instaladas.
Basta usar o pg_dump adequado e você não precisa alterar nada, no seu caso:
fonte
Se você estiver usando o Postgres.app do Heroku, o pg_dump (junto com todos os outros binários) estará em
/Applications/Postgres.app/Contents/MacOS/bin/
então nesse caso é
ln -s /Applications/Postgres.app/Contents/MacOS/bin/pg_dump /usr/local/bin/pg_dump
ou
ln -s /Applications/Postgres.app/Contents/MacOS/bin/* /usr/local/bin/.
agarrar todos eles
fonte
Para macs, use
find / -name pg_dump -type f 2>/dev/null
encontrar o local de pg_dumpPara mim, tenho os seguintes resultados:
Se você não quiser usar
sudo ln -s new_pg_dump old_pg_dump --force
, basta usar:Applications/Postgres.app/Contents/Versions/9.5/bin/pg_dump
substituirpg_dump
no seu terminalPor exemplo:
Funciona para mim!
fonte
Faça o download da versão apropriada do postgres aqui:
https://www.postgresql.org/download/
Certifique-se de executar os seguintes comandos (a URL postgresql.org/download irá gerar a URL específica para você usar; a que eu uso abaixo é apenas um exemplo para o centos 7) como sudo:
sua versão do pg_dump agora deve ser atualizada, verifique com pg_dump -V
fonte
Eu tive um problema semelhante na minha instalação do Fedora 17. Foi isso que fiz para contornar o problema
pg_dump
em/usr/bin/pg_dump
(como root: "rm / usr / bin / pg_dump")Agora faça um link simbólico da instalação do postgresql
Novamente como root
ln -s /usr/pgsql-9.2/bin/pg_dump /usr/bin/pg_dump
Isso deve fazer o truque
fonte
/usr/
( em vez de/usr/local/
,/home/
ou/opt/
, onde excluir coisas geralmente está OK), você realmente precisa usar o gerenciador de pacotes -rpm
&yum
oudpkg
e /apt-get
ouaptitude
, dependendo da distribuição. Desinstale o pacoterpm
ou altere suaPATH
variável de ambiente na sua,.bash_profile
para que a versão mais recente seja encontrada primeiro. Se você estiver em dúvida sobre algo estar sob a gestão de pacotes, usorpm -qf /path/to/file
(RPM) oudpkg -S /path/to/file
(dpkg)