Postgresql 9.2 pg_dump incompatibilité de version
Je suis en train de vider une base de données Postgresql à l'aide de la pg_dump outil.
$ pg_dump books > books.out
Comment jamais, j'obtiens cette erreur.
pg_dump: server version: 9.2.1; pg_dump version: 9.1.6
pg_dump: aborting because of server version mismatch
La --ignore-version
option est maintenant obsolète et ne serait vraiment pas une solution à mon problème, même si elle avait travaillé.
Comment puis-je mettre à jour pg_dump pour résoudre ce problème?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez soit installer PostgreSQL 9.2.1 dans le
pg_dump
machine client ou copiez simplement le$PGHOME
à partir du serveur PostgreSQL machine à l'ordinateur client. Notez qu'il n'est pas nécessaire deinitdb
un nouveau cluster dans la machine du client.Après avoir terminé l'installation du 9.2.1 logiciel, n'oubliez pas de modifier certaines variables d'environnement dans votre
.bash_profile
fichier.J'ai rencontré ce tout en utilisant Heroku sur Ubuntu, et voici comment je l'ai corrigé:
Ajouter le PostgreSQL dépôt apt comme décrit dans "Linux téléchargements (Ubuntu)
". (Il y a des pages similaires pour d'autres systèmes d'exploitation.)
La mise à niveau vers la dernière version (9.3 pour moi) avec:
Recréer le lien symbolique dans
/usr/bin
avec:Le numéro de version dans le
/usr/lib/postgresql/...
chemin d'accès ci-dessus doivent correspondre à laserver version
numéro de l'erreur que vous avez reçu. Donc, si votre erreur dit,pg_dump: server version: 9.9
, un lien vers la/usr/lib/postgresql/9.9/...
.Vérifier la version installée(s) de pg_dump:
Ma sortie était:
Il y a deux versions installées. Pour mettre à jour pg_dump avec la version la plus récente:
Cela va créer le lien symbolique vers la version la plus récente.
locate pg_dump
2>/dev/null
depuis que va jeter le flux d'ERREUR plutôt que de l'impression à la console. Je pense qu'on devrait vouloir voir toutes les erreurs qui se passe, à l'exception de quelques rares cas. Par exemple, dans mon cas, il me rappelle que je n'était pas la racine donc de ne pas voir certains répertoires dans lesquels les nouveaux pg_dump version a été installé. En général, de ne pas supprimer les erreurs.Mac ont un builtin
/usr/bin/pg_dump
de commande qui est utilisé comme valeur par défaut.Avec postgresql installer vous obtenez un autre binaire à
/Library/PostgreSQL/<version>/bin/pg_dump
Vous pouvez localisez simplement
pg_dump
et utiliser le chemin d'accès complet dans la commandeMaintenant seulement utiliser le chemin d'accès de la version désirée dans la commande
sudo /usr/pgsql-<version>/bin/pg_dump <database-name> -U <username> -h localhost
Si vous êtes sur Ubuntu, vous pouvez avoir une vieille version de
postgresql-client
installé. En fonction des versions dans votre message d'erreur, la solution serait la suivante:Chaque fois que vous mettre à jour ou ré installer une nouvelle version de PostgreSQL, une dernière version de
pg_dump
est installé.Il doit y avoir un
PostgreSQL/bin
répertoire quelque part sur votre système, en vertu de la dernière version de PostgreSQL que vous avez installé ( 9.2.1 est le dernier) et essayez de lancer lepg_dump
à partir de là.Terminal.app
,find / -name pg_dump -type f 2>/dev/null
Pour ceux qui exécutent Postgres.app:
Ajoutez le code suivant à votre
.bash_profile
:Redémarrer le terminal.
Pour les utilisateurs de mac
mettre à la haut de .le fichier de profil.
puis exécutez
Pour Mac avec Homebrew. J'ai eu ce problème lors de l'extraction de la db à partir d'Heroku. J'ai corrigé juste en cours d'exécution:
Comme l'a expliqué, c'est parce que votre postgresql est dans la vieille version -> mise à jour il
Pour Mac via homebrew:
brew tap petere/postgresql
,brew install <formula>
(par exemple:brew install petere/postgresql/postgresql-9.6
)Supprimer les vieux postgre:
brew unlink postgresql
brew link -f postgresql-9.6
Si une erreur arrive, n'oubliez pas de lire et de suivre infusion d'instructions à chaque étape.
Check this out pour plus d': https://github.com/petere/homebrew-postgresql
Une alternative répondre, je ne pense pas que quelqu'un d'autre a couvert.
Si vous avez plusieurs PG clusters installé (comme moi), vous pouvez afficher à l'aide de ces
pg_lsclusters
.Vous devriez être capable de voir la version et le cluster à partir de la liste affichée.
À partir de là, vous pourrez alors faire ceci:
Évidemment, remplacer la version et le nom du cluster avec celui qui est approprié pour votre situation à partir de ce qui est retourné par
pg_lsclusters
la séparation de la version et du cluster avec un /. Ce objectifs du cluster que vous souhaitez exécuter.pg_dump
n'était pas de travailler sur l'un de mes groupes. S'avère, c'était par défaut à l'aide de la version de Postgresql, quand un de mes groupes a été mis à niveau vers une nouvelle version. La spécification de cluster, a résolu le problème.Sur Ubuntu, vous pouvez simplement ajouter le plus récent dépôt Apt et de lancer:
La réponse semble idiot, mais si vous obtenez l'erreur ci-dessus et que vous voulez exécuter le pg_dump pour version antérieure aller au répertoire bin de postgres et le type
./pg_dump servername > out.sql ./ignore la racine et de la recherche de pg_dump dans le répertoire courant
** après l'installation de postgres est la version de match(9.2)
Créer un lien symbolique ou nouveau raccourci
**- sur le fichier '/usr/bin'
exemple
-- comment appeler : new_pg_dump -h 192.168.9.88 -U postgres base de données
Si vous avez le panneau installé, vous pouvez faire quelque chose comme:
$ docker run postgres:9.2 pg_dump books > books.out
Qui va télécharger le conteneur Docker avec Postgresql 9.2, il faut l'exécuter
pg_dump
à l'intérieur du conteneur, et écrire la sortie.Bien, j'ai eu le même problème que j'ai deux postgress versions installées.
Juste utiliser le bon de pg_dump et vous n'avez pas besoin de changer quoi que ce soit, dans votre cas:
J'ai eu la même erreur, et voilà comment je l'ai résolu dans mon cas.
Cela signifie que votre version de postgresql est 9.2.1 mais vous avez commencé à postgresql service 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écuter
psql postgres
et vous devriez avoir:psql (9.2.1)
Vous pouvez également exécuter
brew services list
pour voir le statut de votre postgres.Si vous utilisez Heroku Postgres.application de la pg_dump (ainsi que tous les autres fichiers binaires) est en
/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/.
simplement de prendre toutes
Essayer ça:
Si la base de données est installée sur un autre ordinateur, il est probablement juste de la version de pg_dump installé. Cela signifie que vous pouvez exécuter la commande pg_dump commande à distance avec SSH:
ssh username@dbserver pg_dump books > books.out
Vous pouvez également utiliser la clé publique d'authentification sans mot de passe pour l'exécution. Les étapes pour réaliser que:
Pour mac, utilisez
find /-name pg_dump -type f 2>/dev/null
trouver 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
, il suffit d'utiliser:Applications/Postgres.app/Contents/Versions/9.5/bin/pg_dump
pour le remplacer par depg_dump
dans votre terminalPar exemple:
Ça marche pour moi!
Pour moi, la question a été mise à jour
psql
apt-get
n'était pas de résoudre les versions les plus récentes, même aprèsupdate
. La suite travaillé.Ubuntu
Commencer avec l'importation de la clé GPG pour PostgreSQL paquets.
Maintenant ajouter le dépôt de votre système.
Installer PostgreSQL sur Ubuntu
https://www.postgresql.org/download/linux/ubuntu/
J'ai connu un problème similaire sur ma Fedora 17 installation. C'est ce que j'ai fait pour passer autour de la question
pg_dump
à/usr/bin/pg_dump
(en tant que root: "rm /usr/bin/pg_dump")Maintenant faire un lien symbolique de l'installation de postgresql
Root
ln -s /usr/pgsql-9.2/bin/pg_dump /usr/bin/pg_dump
Cela devrait faire l'affaire
/usr/
(plutôt que/usr/local/
,/home/
ou/opt/
, où la suppression de choses est généralement OK) vous vraiment besoin d'utiliser le gestionnaire de paquets -rpm
&yum
oudpkg
etapt-get
ouaptitude
, distro-fonction. Désinstaller le paquet avecrpm
ou de modifier votrePATH
variable d'environnement dans votre.bash_profile
de sorte que la version la plus récente est trouvé en premier. Si vous êtes dans le doute au sujet de quelque chose, en vertu de gestion de paquets, utilisezrpm -qf /path/to/file
(TR / min) oudpkg -S /path/to/file
(dpkg)