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.
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.
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
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
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.
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.
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