Ich verwende PostgreSQL unter Debian Unstable / Sid. Ich habe die aktuellen Versionen bekommt (9.1) von postgresql
, postgresql-client
, postgresql-client-common
(143) installiert ist .
Das Problem, das ich habe, ist zu versuchen zu rennen pg_dump
. Ich erhalte diesen Fehler:
pg_dump: server version: 9.1.9; pg_dump version: 9.0.6
pg_dump: aborting because of server version mismatch
Ich kann anscheinend nicht herausfinden, wie ich eine neuere Version von bekomme pg_dump
. Es scheint aus dem postgresql-client-common
Paket zu kommen, und ich habe versucht, darauf zu laufen apt-get --reinstall
, aber das brachte mir keine neuere Version von pg_dump.
Wie kann ich das umgehen? Oder wo finde ich ein Paket mit einer neueren Version von pg_dump
?
debian
postgresql
Supercheetah
quelle
quelle
which pg_dump
zeigt dir? Nur um zu bestätigen, dass es sich tatsächlich um die verpackte Version handelt und nicht um eine andere./usr/bin/pg_dump
unddpkg -S /usr/bin/pg_dump
gibt mirpostgresql-client-common: /usr/bin/pg_dump
.Antworten:
Einige Optionen.
Laden Sie .deb 9.1 von der Postgres-Website herunter
Schauen Sie sich diese Seite mit dem Titel an: Linux-Downloads (Debian) - PostgreSQL . Sie können entweder eine aktualisierte .deb-Datei direkt von der Site herunterladen oder erneut auf deren Repository verweisen und einen Befehl wie den folgenden ausführen:
Debian Backports
Möglicherweise finden Sie hier bestimmte Versionen unter http://backports.debian.org/ .
Verwenden Sie eine generische Version
Sie können einen binären Build von PostgreSQL herunterladen und in Ihrem Home-Verzeichnis oder
/opt
zum Beispiel installieren .Laden Sie eines der Pre-Builds für den Unternehmensgebrauch herunter
Ich habe nicht viel Erfahrung mit diesen, aber Sie können möglicherweise eine dieser Versionen herunterladen , die einer generischen Version ähneln, und den Client aus der Installation verwenden, so wie er ist, und Ihre Datenbank sichern.
Cross-Distribution-Pakete
Sie können Pakete herunterladen , die so erstellt wurden, dass sie verteilungsunabhängig sind. Ich habe gerade die Version 9.1.9 heruntergeladen und sie enthält das
pg_dump
Tool.Die Software wird entweder als .rpm oder .deb bereitgestellt und auf installiert
/opt/postgres/9.1
. Insbesondere wird daspg_dump
Tool hier bereitgestellt :/opt/postgres/9.1/bin/pg_dump
.quelle
pg_dump
, die alt und inkompatibel ist. Gibt es einen Ort, an dem ich genau das finden kann?pg_dump
Befehl von dort aus verwenden. Sie sollten nicht installiert werden müssen, sondern nur nicht in einem Verzeichnis geteert sein. Möglicherweise müssen Sie eine Umgebungsvariable festlegen, die auf ein Bibliotheksverzeichnis verweist, dies sollte jedoch recht einfach sein.Eine andere Option, die für Sie geeignet sein könnte, ist die Deinstallation der alten parallelen Version:
auf debian / ubuntu:
Dadurch bleibt die spätere Version (z. B. 9.1) erhalten, in der nur die älteren 8.4-Client- und Server-Bibliotheken entfernt werden.
quelle
In meinem Fall hatte ich zwei Datenbanksätze, von denen einige auf der alten Version von Postgresql 8.4 und andere auf Version 9.1 ausgeführt wurden. Was ich getan habe, war,
pg_dump
mit dem folgendenlocate
Befehl auf einem Linux-Computer zu suchenDa die Standardeinstellung
/usr/bin/pg_dump
für Postgresql Version 8.4 ist, habe ich sie nur über die/usr/lib/postgresql/9.1/bin/pg_dump
Befehlszeile angegeben, wenn ich aus 9.1-Datenbanken ausgegeben habe, die auf einem anderen Port ausgeführt werden, und es hat funktioniert.quelle
Zusätzlich zu den obigen Antworten können Sie
pg_dump
und anderen Befehlen mitteilen , welche Version über diecluster
Option verwendet werden soll. Zum Beispiel,wird auf die 9.1-Version abzielen.
Beachten Sie, dass dies verwendet wird
pg_wrapper
, was mit Ubuntu (Debian) kommtpostgresql-common
und funktioniert . Beachten Sie auch, dass der Cluster ( im Beispiel) in Ihrer Einstellung möglicherweise anders ist.main
Weitere Informationen zu
pg_wrapper
finden Sie in dieser DBA-Antwort .quelle
Ich bin heute auf dasselbe Problem gestoßen und Ericks Antwort scheint am genauesten zu sein. Das Problem ist wahrscheinlich, dass Sie verschiedene Versionen des postgresql-Clients haben und pg_dump nur den ältesten Client verwendet.
Sie können dies beheben, indem Sie den von ihm beschriebenen vollständigen Pfad verwenden. Ich habe jedoch eine einfachere Lösung gefunden, indem Sie das gemeinsame Paket postgresql-client (das alle Clients entfernt) entfernen und dann postgresql-client-9.3 neu installieren. Damit haben Sie nur die neuesten Versionen von pg_dump, die Sie wahrscheinlich wollen.
quelle