it-swarm.com.de

Wie man pg_dump-Versionsfehler behebt?

Beim Versuch, lokale Daten an Heroku zu senden, stößt man auf einen Versionskonflikt zwischen zwei verschiedenen Versionen von pg_dump.

Im Einzelnen erhalte ich folgende Nachricht:

pg_dump: server version: 9.2.2; pg_dump version: 9.1.4
pg_dump: aborting because of server version mismatch

Ich habe andere mit diesem Problem gefunden, weiß aber nicht genug, um die vorgeschlagenen Lösungen umzusetzen. (Ich bin neu in Ruby auf Rails, PostgreSQL, Heroku und dem Mac! Ich bin gerade dabei, das Aufnehmen von Dingen zu durchspielen.)

Ich dachte, ich könnte mein Leben vereinfachen, wenn ich PostgreSQL auf meinem lokalen Computer deinstalliere und mit einer Neuinstallation von PostgreSQL 9.2.2 von http://postgresapp.com/ erneut beginne, aber ich tue es nicht Ich weiß nicht, wie ich die Deinstallation durchführen soll.

Ich verwende Mac OS X Mountain Lion 10.8.2.

26
user1147171

OS X 10.8 wird mit der Version 9.1.4 pg_dump Im Verzeichnis /usr/bin Sowie mit psql und anderen clientseitigen Programmen ausgeliefert PostgreSQL-Werkzeuge. Dies bedeutet nicht, dass PostgreSQL als Server installiert ist (es sei denn, Sie haben OS X Server Edition). Sie müssen PostgreSQL also nicht deinstallieren, da es nicht installiert ist, und es ist besser, diese Postgres-Client-Tools nicht in /usr/bin Zu entfernen, da sie zum von Apple gelieferten System gehören. Sie müssen nur umgangen werden.

Das von postgres.app bereitgestellte Paket umfasst sowohl den PostgreSQL-Server als auch die clientseitigen Tools derselben Version wie dieser Server. Diese Tools werden in /Applications/Postgres.app/Contents/MacOS/bin Installiert.

Um diese anstelle der 9.1 von Apple, wenn Sie in einem Terminal arbeiten) zu verwenden, sagt postgres.app Dokumentation zu tun:

PATH="/Applications/Postgres.app/Contents/MacOS/bin:$PATH"

und legen Sie es in Ihrer .profile - Datei.

Sobald Sie dies getan haben und pg_dump Ausführen, sollten Sie nicht mehr den Fehler erhalten, dass es sich um die falsche Version handelt, da diese mit postgres.app (derzeit 9.2.2) ausgeliefert wird.

Ich habe dieses Setup und es funktioniert OK für mich.

29
Daniel Vérité

Wenn Sie nur Ihr pg_dump auf die neueste Version aktualisieren müssen und Homebrew und Mac haben, wenn die App die neueste Version hat und Ihr lokales pg nicht:

brew upgrade postgresql

29
drjorgepolanco

Wenn Sie postgresapp 9.3.x verwenden, ist der Pfad anders. Folgendes hat für mich funktioniert (mit freundlicher Genehmigung von http://sigmyers.com/blog/2013/3/12/postgres-pgdump-version-mismatch-error-postgresapp-postgresappcom )

export PG_BIN_PATH="/Applications/Postgres.app/Contents/Versions/9.3/bin/"
PATH=$PG_BIN_PATH:$PATH

Suchen Sie hier nach dem neuesten Pfad: http://postgresapp.com/documentation/cli-tools.html

7
user1322092

Ich verwende den Mountain Lion Server. Mein PostgreSQL-Server ist auf Version 9.2.1 und die Standardtools sind auf 9.1.5.

Ich musste benutzen:

PATH="/Applications/Server.app/Contents/ServerRoot/usr/bin:$PATH"

damit es funktioniert.

2
samvax

Ja, manchmal, wenn Sie Postgres.app ausführen, kann dies nach dem Upgrade passieren. Stellen Sie sicher, dass Sie Postgres.app neu starten - es wird Ihren PFAD aktualisieren.

1
Lukasz Muzyka

In meinem Fall habe ich postgresql über Homebrew installiert und die ausführbaren Dateien sind hier: /usr/local/opt/[email protected]/bin

Oder Sie kopieren den Speicherauszug und stellen die Ausführung in den Ordner /Applications/Postgres.app/Contents/SharedSupport zurück

oder in PdAgmin verweisen Sie den PG bin-Pfad (in Eigenschaften -> binärer Pfad) auf den Pfad der ausführbaren Dateien Ihres Postgre