J'essaye de vider une base de données Postgresql à l'aide de l' outil pg_dump .
$ pg_dump books > books.out
Comment jamais je reçois cette erreur.
pg_dump: server version: 9.2.1; pg_dump version: 9.1.6
pg_dump: aborting because of server version mismatch
L' --ignore-version
option est maintenant obsolète et ne serait vraiment pas une solution à mon problème même si cela avait fonctionné.
Comment puis-je mettre à niveau pg_dump pour résoudre ce problème?
postgresql
backup
pg-dump
postgresql-9.2
Chris Colla
la source
la source
Réponses:
Vous pouvez soit installer PostgreSQL 9.2.1 sur la
pg_dump
machine cliente, soit simplement copier le$PGHOME
depuis la machine serveur PostgreSQL vers la machine cliente. Notez qu'il n'est pas nécessaire deinitdb
créer un nouveau cluster sur l'ordinateur client.Après avoir terminé l'installation du logiciel 9.2.1, n'oubliez pas de modifier certaines variables d'environnement dans votre
.bash_profile
fichier.la source
J'ai rencontré cela en utilisant Heroku sur Ubuntu, et voici comment je l'ai corrigé:
Ajoutez le référentiel apt PostgreSQL comme décrit dans " Téléchargements Linux (Ubuntu) ". (Il existe des pages similaires pour d'autres systèmes d'exploitation.)
Passez à la dernière version (9.3 pour moi) avec:
Recréez le lien symbolique
/usr/bin
avec:Le numéro de version dans le
/usr/lib/postgresql/...
chemin ci-dessus doit correspondre auserver version
numéro de l'erreur que vous avez reçue. Donc, si votre erreur ditpg_dump: server version: 9.9
, alors créez un lien vers/usr/lib/postgresql/9.9/...
.la source
Vérifiez la ou les versions installées de pg_dump:
Ma sortie était:
Il existe deux versions installées. Pour mettre à jour pg_dump avec la version la plus récente:
Cela créera le lien symbolique vers la nouvelle version.
la source
locate pg_dump
2>/dev/null
car cela rejettera le flux ERROR plutôt que de l'imprimer sur la console. Je pense que l'on devrait vouloir voir des erreurs se produire, sauf dans de rares cas. Par exemple, dans mon cas, cela me rappelle que je n'étais pas root et que je ne voyais donc pas certains répertoires où la nouvelle version de pg_dump était installée. En général, ne supprimez pas les erreurs.Les Mac ont une
/usr/bin/pg_dump
commande intégrée qui est utilisée par défaut.Avec l'installation de postgresql, vous obtenez un autre binaire à
/Library/PostgreSQL/<version>/bin/pg_dump
la source
Vous pouvez simplement localiser
pg_dump
et utiliser le chemin complet dans la commandeMaintenant, utilisez simplement le chemin de la version souhaitée dans la commande
la source
sudo /usr/pgsql-<version>/bin/pg_dump <database-name> -U <username> -h localhost
Si vous êtes sur Ubuntu, vous avez peut-être une ancienne version de
postgresql-client
. En fonction des versions de votre message d'erreur, la solution serait la suivante:la source
Chaque fois que vous mettez à niveau ou réinstallez une nouvelle version de PostgreSQL, une dernière version de
pg_dump
est installée.Il doit y avoir un
PostgreSQL/bin
répertoire quelque part sur votre système, sous la dernière version de PostgreSQL que vous avez installée (9.2.1 est la dernière) et essayez d'exécuter le àpg_dump
partir de là.la source
Terminal.app
,find / -name pg_dump -type f 2>/dev/null
Pour ceux qui utilisent Postgres.app :
Ajoutez le code suivant à votre
.bash_profile
:Redémarrez le terminal.
la source
Pour les Mac avec Homebrew. J'ai eu ce problème lors de la récupération de la base de données de Heroku. Je l'ai corrigé en cours d'exécution:
la source
Pour les utilisateurs de Mac, mettez en haut du fichier .profile.
puis courir
la source
Sur Ubuntu, vous pouvez simplement ajouter le référentiel Apt le plus récent , puis exécuter:
la source
Comme expliqué, c'est parce que votre postgresql est dans l'ancienne version -> mettez-le à jour pour Mac via homebrew:
brew tap petere/postgresql
,brew install <formula>
(par exemplebrew install petere/postgresql/postgresql-9.6
)Supprimer l'ancien postgre:
brew unlink postgresql
brew link -f postgresql-9.6
Si une erreur se produit, n'oubliez pas de lire et de suivre les instructions d'infusion à chaque étape.
Vérifiez ceci pour plus: https://github.com/petere/homebrew-postgresql
la source
Une réponse alternative que je ne pense pas que quiconque ait couvert.
Si vous avez plusieurs clusters PG installés (comme moi), vous pouvez les afficher à l'aide de
pg_lsclusters
.Vous devriez pouvoir voir la version et le cluster dans la liste affichée.
À partir de là, vous pouvez alors faire ceci:
Évidemment, remplacez la version et le nom du cluster par ceux qui correspondent à votre situation et ceux renvoyés en
pg_lsclusters
séparant la version et le cluster par un /. Cela cible le cluster spécifique sur lequel vous souhaitez exécuter.la source
pg_dump
ne travaillais pas sur l'un de mes clusters. Il s'est avéré qu'il utilisait la version Postgresql par défaut, lorsqu'un de mes clusters a été mis à niveau vers une version plus récente. Spécifier le cluster, a résolu le problème.Pour moi, le problème était que la mise à jour
psql
apt-get
ne résolvait pas les nouvelles versions, même aprèsupdate
. Ce qui suit a fonctionné.Ubuntu
Commencez par importer la clé GPG pour les packages PostgreSQL.
Ajoutez maintenant le référentiel à votre système.
Installez PostgreSQL sur Ubuntu
https://www.postgresql.org/download/linux/ubuntu/
la source
Si docker est installé, vous pouvez faire quelque chose comme:
$ docker run postgres:9.2 pg_dump books > books.out
Cela téléchargera le conteneur Docker avec Postgres 9.2, s'exécutera à l'
pg_dump
intérieur du conteneur et écrira la sortie.la source
La réponse semble idiote mais si vous obtenez l'erreur ci-dessus et que vous voulez exécuter pg_dump pour la version antérieure, allez dans le répertoire bin de postgres et tapez
./pg_dump nom_serveur> out.sql ./ ignore la racine et recherche pg_dump dans le répertoire courant
la source
J'ai eu la même erreur et c'est ainsi que je l'ai résolue dans mon cas. Cela signifie que votre version postgresql est 9.2.1 mais que vous avez démarré le service postgresql de 9.1.6.
Si vous exécutez,
psql postgres
vous verrez:psql (9.2.1, server 9.1.6)
Ce que j'ai fait pour résoudre ce problème est:
brew services stop [email protected]
brew services restart [email protected]
Maintenant, exécutez
psql postgres
et vous devriez avoir:psql (9.2.1)
Vous pouvez également exécuter
brew services list
pour voir l'état de vos postgres.la source
** après l'installation, la version postgres correspond (9.2) Créer un lien symbolique ou un nouveau raccourci
** - sur '/ usr / bin'
exemple
- comment appeler: new_pg_dump -h 192.168.9.88 -U base de données postgres
la source
Essayez ça:
la source
Si la base de données est installée sur une machine différente, la version correcte de pg_dump est probablement installée. Cela signifie que vous pouvez exécuter la commande pg_dump à distance avec SSH:
ssh username@dbserver pg_dump books > books.out
Vous pouvez également utiliser l'authentification par clé publique pour une exécution sans mot de passe. Étapes pour y parvenir:
la source
Eh bien, j'ai eu le même problème car j'ai installé deux versions postgress.
Utilisez simplement le pg_dump approprié et vous n'avez rien à changer, dans votre cas:
la source
Si vous utilisez Postgres.app de Heroku, pg_dump (avec tous les autres binaires) est dans
/Applications/Postgres.app/Contents/MacOS/bin/
donc dans ce cas c'est
ln -s /Applications/Postgres.app/Contents/MacOS/bin/pg_dump /usr/local/bin/pg_dump
ou
ln -s /Applications/Postgres.app/Contents/MacOS/bin/* /usr/local/bin/.
pour les attraper tous
la source
Pour les macs, utilisez
find / -name pg_dump -type f 2>/dev/null
rechercher l'emplacement de pg_dumpPour moi, j'ai les résultats suivants:
Si vous ne souhaitez pas utiliser
sudo ln -s new_pg_dump old_pg_dump --force
, utilisez simplement:Applications/Postgres.app/Contents/Versions/9.5/bin/pg_dump
à remplacer parpg_dump
dans votre terminalPar exemple:
Ça marche pour moi!
la source
Téléchargez la version appropriée de postgres ici:
https://www.postgresql.org/download/
Assurez-vous d'exécuter les commandes suivantes (l'URL postgresql.org/download générera l'URL spécifique que vous utiliserez; celle que j'utilise ci-dessous n'est qu'un exemple pour centos 7) comme sudo:
votre version de pg_dump devrait maintenant être mise à jour, vérifiez avec pg_dump -V
la source
J'ai rencontré un problème similaire sur mon installation Fedora 17. C'est ce que j'ai fait pour contourner le problème
pg_dump
à/usr/bin/pg_dump
(en tant que root: "rm / usr / bin / pg_dump")Maintenant, faites un lien symbolique de l'installation de postgresql
Encore une fois en tant que root
ln -s /usr/pgsql-9.2/bin/pg_dump /usr/bin/pg_dump
Cela devrait faire l'affaire
la source
/usr/
(plutôt que/usr/local/
,/home/
ou/opt/
, où la suppression de choses est généralement OK), vous devez vraiment utiliser le gestionnaire de paquets -rpm
&yum
oudpkg
etapt-get
ouaptitude
, selon la distribution. Désinstallez le package avecrpm
ou modifiez votrePATH
variable d'environnement dans votre.bash_profile
afin que la version la plus récente soit trouvée en premier. Si vous avez un doute sur quelque chose sous la gestion des paquets, utilisezrpm -qf /path/to/file
(RPM) oudpkg -S /path/to/file
(dpkg)