disadattamento della versione di pg_dump su Debian


8

Sto eseguendo PostgreSQL su Debian Unstable / Sid. Ho le versioni correnti (9,1) di postgresql, postgresql-client, postgresql-client-common(143) installati.

Il problema che sto riscontrando sta provando a correre pg_dump. Ricevo questo errore:

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

Non riesco a capire come ottenere una versione più recente di pg_dump. Sembra provenire dal postgresql-client-commonpacchetto e sto provando a eseguirlo apt-get --reinstall, ma questo non mi ha procurato una versione più recente di pg_dump.

Come posso aggirare questo? O dove posso trovare un pacchetto con una versione più recente di pg_dump?


Ti rendi conto che questo è normale per il corso dato che stai eseguendo Debian Sid? È instabile. Cosa which pg_dumpti mostra? Solo per confermare che è in realtà la versione in pacchetto e non un'altra.
slm

Sì, l'ho verificato. Sta mostrando /usr/bin/pg_dumpe dpkg -S /usr/bin/pg_dumpmi dà postgresql-client-common: /usr/bin/pg_dump.
supercheetah

Controlla la mia risposta, vedi se aiuta.
slm

Risposte:


3

Coppia di opzioni.

Scarica .deb 9.1 dal sito di Postgres

Dai un'occhiata a questa pagina intitolata: Download Linux (Debian) - PostgreSQL . Puoi scaricare un .deb aggiornato direttamente dal sito o reindirizzare al loro repository ed eseguire un comando come questo:

apt-get install postgresql-9.1

Backport Debian

Puoi trovare versioni specifiche qui, http://backports.debian.org/ .

Usa una versione generica

Puoi scaricare una build binaria di PostgreSQL e metterla nella tua home directory o /optper esempio.

Scarica una delle pre-build per uso aziendale

Non ho molta esperienza con questi, ma potresti essere in grado di scaricare uno di questi simile a una versione generica e utilizzare il client dalla sua installazione, così come, fare il dump del tuo database.

Pacchetti di distribuzione incrociata

Puoi scaricare i pacchetti che sono stati creati in modo da renderli indipendenti dalla distribuzione. Ho appena scaricato la versione 9.1.9 e include lo pg_dumpstrumento.

Il software viene fornito come .rpm o .deb e si installa su /opt/postgres/9.1. Specificamente l' pg_dumputensile è fornito qui: /opt/postgres/9.1/bin/pg_dump.


La versione di PostgreSQL non è proprio il problema. È la versione pg_dumpprecedente e incompatibile. C'è un posto che posso trovare in modo specifico?
supercheetah

Penso che sia in bundle con questi pacchetti. Vorrei solo scaricare uno dei pre-build per la versione specifica e utilizzare il pg_dumpcomando da lì. Non dovrebbero essere installati, non decompressi in una directory. Potrebbe essere necessario impostare una variabile di ambiente in modo che punti a una directory di libreria ma dovrebbe essere piuttosto semplice.
slm

4

Un'altra opzione, che potrebbe essere adatta a te, è disinstallare la vecchia versione parallela:

su debian / ubuntu:

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

Ciò preserva la versione successiva (ad es. 9.1) rimuovendo solo le librerie client e server 8.4 precedenti.


4

Nel mio caso avevo due set di database alcuni in esecuzione sulla vecchia versione di Postgresql 8.4 e altri in esecuzione sulla versione 9.1. Quello che ho fatto è stato individuare pg_dumpnella macchina Linux usando il locatecomando seguente

$ 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

Poiché l'impostazione predefinita /usr/bin/pg_dumpè Postgresql versione 8.4, ho appena specificato /usr/lib/postgresql/9.1/bin/pg_dumpdalla riga di comando durante il dumping da database 9.1 che funzionano su una porta diversa e ha funzionato.

$ /usr/lib/postgresql/9.1/bin/pg_dump -p 5434

2

Oltre alle risposte sopra, puoi anche dire pg_dumpe altri comandi, quale versione usare tramite l' clusteropzione. Per esempio,

$pg_dump --cluster 9.1/main

avrà come target la versione 9.1.

Si noti che questo fa uso di pg_wrapper, che viene fornito postgresql-commone funziona su Ubuntu (Debian). Si noti inoltre che il cluster ( mainnell'esempio) potrebbe essere diverso nelle impostazioni.

Ulteriori informazioni su pg_wrappersono disponibili in questa risposta DBA .


0

Oggi ho riscontrato lo stesso problema e la risposta di Erick sembra essere la più accurata. È probabile che il problema abbia versioni diverse di postgresql-client e pg_dump utilizza solo il client più vecchio.

Puoi risolverlo usando il percorso completo come descritto, ma ho trovato una soluzione più semplice per rimuovere il pacchetto postgresql-client-common (che rimuove tutti i client), quindi reinstallare postgresql-client-9.3. Questo ti lascia solo con le ultime versioni di pg_dump che probabilmente vorrai.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.