Ich versuche, eine Postgresql-Datenbank mit dem Tool pg_dump zu sichern .
$ pg_dump books > books.out
Wie auch immer, ich bekomme diesen Fehler.
pg_dump: server version: 9.2.1; pg_dump version: 9.1.6
pg_dump: aborting because of server version mismatch
Die --ignore-version
Option ist jetzt veraltet und wäre wirklich keine Lösung für mein Problem, selbst wenn es funktioniert hätte.
Wie kann ich pg_dump aktualisieren , um dieses Problem zu beheben?
postgresql
backup
pg-dump
postgresql-9.2
Chris Colla
quelle
quelle
Antworten:
Sie können PostgreSQL 9.2.1 entweder auf dem
pg_dump
Client-Computer installieren oder einfach$PGHOME
vom PostgreSQL-Server auf den Client-Computer kopieren . Beachten Sie, dassinitdb
auf dem Clientcomputer kein neuer Cluster erforderlich ist .Denken Sie nach Abschluss der Installation der 9.2.1-Software daran, einige Umgebungsvariablen in Ihrer
.bash_profile
Datei zu bearbeiten .quelle
Ich bin darauf gestoßen, als ich Heroku unter Ubuntu verwendet habe, und hier ist, wie ich es behoben habe:
Fügen Sie das PostgreSQL apt-Repository hinzu, wie unter " Linux-Downloads (Ubuntu) " beschrieben. (Es gibt ähnliche Seiten für andere Betriebssysteme.)
Upgrade auf die neueste Version (9.3 für mich) mit:
Erstellen Sie die symbolische Verknüpfung neu
/usr/bin
mit:Die Versionsnummer im
/usr/lib/postgresql/...
obigen Pfad sollte mit derserver version
Nummer des Fehlers übereinstimmen, den Sie erhalten haben. Wenn Ihr Fehler lautet,pg_dump: server version: 9.9
verlinken Sie auf/usr/lib/postgresql/9.9/...
.quelle
Überprüfen Sie die installierte (n) Version (en) von pg_dump:
Meine Ausgabe war:
Es sind zwei Versionen installiert. So aktualisieren Sie pg_dump mit der neueren Version:
Dadurch wird der Symlink zur neueren Version erstellt.
quelle
locate pg_dump
2>/dev/null
da dadurch der ERROR-Stream gelöscht wird, anstatt ihn auf der Konsole zu drucken. Ich denke, man sollte sehen wollen, dass Fehler auftreten, außer in einigen seltenen Fällen. In meinem Fall erinnert es mich beispielsweise daran, dass ich nicht root war, sodass einige Verzeichnisse, in denen die neuere Version von pg_dump installiert wurde, nicht angezeigt wurden. Entfernen Sie im Allgemeinen keine Fehler.Macs verfügen über einen integrierten
/usr/bin/pg_dump
Befehl, der standardmäßig verwendet wird.Mit der postgresql-Installation erhalten Sie eine weitere Binärdatei bei
/Library/PostgreSQL/<version>/bin/pg_dump
quelle
Sie können einfach
pg_dump
den vollständigen Pfad im Befehl suchen und verwendenVerwenden Sie jetzt einfach den Pfad der gewünschten Version im Befehl
quelle
sudo /usr/pgsql-<version>/bin/pg_dump <database-name> -U <username> -h localhost
Wenn Sie unter Ubuntu arbeiten, ist möglicherweise eine alte Version von
postgresql-client
installiert. Basierend auf den Versionen in Ihrer Fehlermeldung lautet die Lösung wie folgt:quelle
Jedes Mal, wenn Sie eine neue Version von PostgreSQL aktualisieren oder neu installieren, wird eine neueste Version von
pg_dump
installiert.Es muss
PostgreSQL/bin
irgendwo auf Ihrem System ein Verzeichnis unter der neuesten Version von PostgreSQL vorhanden sein, die Sie installiert haben (9.2.1 ist die neueste), und versuchen Sie, das Verzeichnispg_dump
von dort aus auszuführen .quelle
Terminal.app
,find / -name pg_dump -type f 2>/dev/null
Für diejenigen, die Postgres.app ausführen :
Fügen Sie Ihrem Code den folgenden Code hinzu
.bash_profile
:Terminal neu starten.
quelle
Für Macs mit Homebrew. Ich hatte dieses Problem beim Abrufen der Datenbank von Heroku. Ich habe behoben, dass es gerade läuft:
quelle
Für Mac-Benutzer an die Spitze der .profile-Datei setzen.
dann renne
quelle
Unter Ubuntu können Sie einfach das neueste Apt-Repository hinzufügen und dann Folgendes ausführen:
quelle
Wie bereits erläutert, liegt dies daran, dass Ihr Postgresql in der alten Version vorliegt -> Aktualisieren Sie es für Mac über Homebrew:
brew tap petere/postgresql
,brew install <formula>
(zBbrew install petere/postgresql/postgresql-9.6
)Altes Postgre entfernen:
brew unlink postgresql
brew link -f postgresql-9.6
Wenn ein Fehler auftritt, vergessen Sie nicht, die Brauanweisungen in jedem Schritt zu lesen und zu befolgen.
Weitere Informationen finden Sie unter : https://github.com/petere/homebrew-postgresql
quelle
Eine alternative Antwort, die meines Erachtens noch niemand behandelt hat.
Wenn Sie mehrere PG-Cluster installiert haben (wie ich), können Sie diese mit anzeigen
pg_lsclusters
.Sie sollten in der Lage sein, die Version und den Cluster aus der angezeigten Liste zu sehen.
Von dort aus können Sie dann Folgendes tun:
Ersetzen Sie natürlich den Versions- und Clusternamen durch den für Ihre Umstände geeigneten Namen,
pg_lsclusters
indem Sie die Version und den Cluster durch ein / trennen. Dies zielt auf den spezifischen Cluster ab, für den Sie ausgeführt werden möchten.quelle
pg_dump
nicht an einem meiner Cluster gearbeitet wurde. Es stellte sich heraus, dass die Standardversion von Postgresql verwendet wurde, als einer meiner Cluster auf eine neuere Version aktualisiert wurde. Durch Angabe des Clusters wurde das Problem behoben.Für mich war das Problem, dass das Aktualisieren
psql
apt-get
neuere Versionen auch danach nicht mehr lösteupdate
. Folgendes hat funktioniert.Ubuntu
Beginnen Sie mit dem Import des GPG-Schlüssels für PostgreSQL-Pakete.
Fügen Sie nun das Repository zu Ihrem System hinzu.
Installieren Sie PostgreSQL unter Ubuntu
https://www.postgresql.org/download/linux/ubuntu/
quelle
Wenn Sie Docker installiert haben, können Sie Folgendes tun:
$ docker run postgres:9.2 pg_dump books > books.out
Dadurch wird der Docker-Container mit Postgres 9.2 heruntergeladen,
pg_dump
im Container ausgeführt und die Ausgabe geschrieben.quelle
Die Antwort klingt albern, aber wenn Sie den obigen Fehler erhalten und den pg_dump für eine frühere Version ausführen möchten, gehen Sie zum bin-Verzeichnis von postgres und geben Sie ein
./pg_dump Servername> out.sql ./ ignoriert das Stammverzeichnis und sucht im aktuellen Verzeichnis nach pg_dump
quelle
Ich hatte den gleichen Fehler und so habe ich ihn in meinem Fall gelöst. Dies bedeutet, dass Ihre Postgresql-Version 9.2.1 ist, Sie jedoch den Postgresql-Dienst 9.1.6 gestartet haben.
Wenn Sie laufen, werden
psql postgres
Sie sehen:psql (9.2.1, server 9.1.6)
Was ich getan habe, um dieses Problem zu lösen, ist:
brew services stop [email protected]
brew services restart [email protected]
Jetzt laufen
psql postgres
und du solltest haben:psql (9.2.1)
Sie können auch
brew services list
den Status Ihrer Postgres anzeigen.quelle
** Nach der Installation stimmt die Postgres-Version überein (9.2) Erstellen Sie einen symbolischen Link oder eine neue Verknüpfung
** - auf '/ usr / bin'
Beispiel
- wie man aufruft: new_pg_dump -h 192.168.9.88 -U Postgres-Datenbank
quelle
Versuch das:
quelle
Wenn die Datenbank auf einem anderen Computer installiert ist, ist wahrscheinlich die richtige Version von pg_dump installiert. Dies bedeutet, dass Sie den Befehl pg_dump mit SSH remote ausführen können:
ssh username@dbserver pg_dump books > books.out
Sie können auch die Authentifizierung mit öffentlichem Schlüssel für die kennwortlose Ausführung verwenden. Schritte, um dies zu erreichen:
quelle
Nun, ich hatte das gleiche Problem, da ich zwei Postgress-Versionen installiert habe.
Verwenden Sie einfach den richtigen pg_dump und Sie müssen in Ihrem Fall nichts ändern:
quelle
Wenn Sie Herokus Postgres.app verwenden, befindet sich pg_dump (zusammen mit allen anderen Binärdateien) in
/Applications/Postgres.app/Contents/MacOS/bin/
also in diesem Fall ist es
ln -s /Applications/Postgres.app/Contents/MacOS/bin/pg_dump /usr/local/bin/pg_dump
oder
ln -s /Applications/Postgres.app/Contents/MacOS/bin/* /usr/local/bin/.
um sie alle zu packen
quelle
Verwenden Sie für Macs
find / -name pg_dump -type f 2>/dev/null
den Speicherort von pg_dumpFür mich habe ich folgende Ergebnisse:
Wenn Sie nicht verwenden möchten, verwenden Sie
sudo ln -s new_pg_dump old_pg_dump --force
einfach:Applications/Postgres.app/Contents/Versions/9.5/bin/pg_dump
pg_dump
in Ihrem Terminal zu ersetzenBeispielsweise:
Für mich geht das!
quelle
Laden Sie hier die entsprechende Postgres-Version herunter:
https://www.postgresql.org/download/
Stellen Sie sicher, dass Sie die folgenden Befehle als sudo ausführen (die URL postgresql.org/download generiert die spezifische URL, die Sie verwenden können; die unten verwendete ist nur ein Beispiel für centos 7) als sudo:
Ihre pg_dump-Version sollte jetzt aktualisiert werden. Überprüfen Sie dies mit pg_dump -V
quelle
Bei meiner Fedora 17-Installation ist ein ähnliches Problem aufgetreten. Dies ist, was ich getan habe, um das Problem zu umgehen
pg_dump
um/usr/bin/pg_dump
(als root: "rm / usr / bin / pg_dump")Stellen Sie nun einen symbolischen Link zur Postgresql-Installation her
Wieder als Wurzel
ln -s /usr/pgsql-9.2/bin/pg_dump /usr/bin/pg_dump
Das sollte den Trick machen
quelle
/usr/
( und nicht/usr/local/
,/home/
oder/opt/
, wo die Dinge Löschen der Regel in Ordnung ist) , die Sie wirklich brauchen , den Paket - Manager verwenden -rpm
undyum
oderdpkg
undapt-get
oderaptitude
, Distro-abhängig. Deinstallieren Sie das Paket entweder mitrpm
oder ändern Sie IhrePATH
Umgebungsvariable in Ihrem,.bash_profile
sodass zuerst die neuere Version gefunden wird. Wenn Sie Zweifel haben, dass etwas unter Paketverwaltung steht, verwenden Sierpm -qf /path/to/file
(RPM) oderdpkg -S /path/to/file
(dpkg)