web-dev-qa-db-fra.com

Comment corriger les erreurs d'incompatibilité de version de pg_dump?

Lorsque j'essaie d'obtenir des données locales sur Heroku, je rencontre un décalage de version entre deux versions différentes de pg_dump.

Plus précisément, je reçois ce message:

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

J'en ai trouvé d'autres avec ce problème, mais je n'en sais pas assez pour mettre en œuvre les solutions proposées. (Je suis nouveau à Ruby sur Rails, PostgreSQL, Heroku et le Mac! Très au stade de jouer avec les choses au fur et à mesure.)

Je pensais que je pourrais simplifier ma vie si je désinstallais tous les PostgreSQL sur ma machine locale et recommençais avec une nouvelle installation de PostgreSQL 9.2.2 de http://postgresapp.com/ , mais je ne ' Je ne sais pas comment procéder à la désinstallation.

J'utilise Mac OS X Mountain Lion 10.8.2.

26
user1147171

OS X 10.8 est livré avec pg_dump version 9.1.4 dans le /usr/bin répertoire, ainsi que psql et d'autres programmes qui sont côté client des outils PostgreSQL. Cela ne signifie pas que PostgreSQL en tant que serveur est installé (sauf si vous avez OS X Server Edition). Vous n'avez donc pas à désinstaller PostgreSQL car il n'est pas installé et il vaut mieux ne pas supprimer ces outils client postgres dans /usr/bin car ils appartiennent au système tel qu'il est expédié par Apple. Ils ont juste besoin d'être mis de côté.

Le package fourni par postgres.app comprend à la fois le serveur PostgreSQL et les outils côté client de la même version que ce serveur. Ces outils sont installés dans /Applications/Postgres.app/Contents/MacOS/bin

Pour les utiliser à la place des 9.1 de Apple lorsque vous travaillez dans un terminal, postgres.app documentation dit de faire:

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

et mettez-le dans votre .profile fichier.

Une fois que vous avez fait cela et que vous exécutez pg_dump, vous ne devriez plus avoir d'erreur car c'est la mauvaise version, car ce serait celle qui est livrée avec postgres.app (actuellement 9.2.2).

J'ai cette configuration et cela fonctionne bien pour moi.

29
Daniel Vérité

Si vous avez seulement besoin de mettre à niveau votre pg_dump vers la dernière version et que vous avez homebrew et mac, si l'application a la dernière version et que votre pg local ne le fait pas:

brew upgrade postgresql

29
drjorgepolanco

Si vous utilisez postgresapp 9.3.x, le chemin est différent. Ce qui suit a fonctionné pour moi (avec la permission de 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

Vérifiez ici le dernier chemin: http://postgresapp.com/documentation/cli-tools.html

7
user1322092

J'exécute Mountain Lion Server. Mon serveur PostgreSQL est à la version 9.2.1 et les outils par défaut sont à 9.1.5.

J'ai dû utiliser:

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

pour le faire fonctionner.

2
samvax

Oui, parfois, si vous exécutez Postgres.app, cela peut se produire après la mise à niveau. Assurez-vous de redémarrer votre Postgres.app - cela mettra à jour votre CHEMIN.

1
Lukasz Muzyka

Dans mon cas, j'ai postgresql installé via homebrew et les exécutables sont ici: /usr/local/opt/[email protected]/bin

Ou vous copiez le vidage et restaurez les exécutions dans le dossier /Applications/Postgres.app/Contents/SharedSupport

ou dans PdAgmin vous pointez le chemin du bac PG (dans les propriétés -> chemin binaire) vers le chemin des exécutables de votre postgre