Ich habe zwei PostgreSQL-Server auf meinem Computer installiert. Einer ist 9.1 und der andere ist 9.3. Ich muss beide Server installiert haben.
Wenn ich jedoch pg_dump ausführe, wird ein Versionsfehler angezeigt:
server version: 9.3.6; pg_dump version: 9.1.15
pg_dump: aborting because of server version mismatch
Wie kann ich das lösen? ( Beide Versionen können nicht deinstalliert werden. Ich habe die Version 9.1 zuerst und die Version 9.3 viele Monate später installiert. Ich muss beide Datenbankserver installieren.)
postgresql
Luis Masuelli
quelle
quelle
pg_dump
. Beide sind installiert, aber nur einer ist die Standardeinstellung. Suchen Sieupdate-alternatives
nach den Pfaden oderdpkg -L
dem Postgresql-Client-Paket, um zu sehen, wo sie sich befinden. Sie haben keinen sofortigen Zugriff auf eine Ubuntu-Box, um sich selbst zu zeigen.PATH
Dann müssen Sie die Umgebungsvariable ändern, mit der die App ausgeführt wird.Antworten:
TL; DR : Wenn beide PostgreSQL-Instanzen von den Ubuntu-Paketen verwaltet werden (wie sie sollten), verwenden Sie einfach die
--cluster
Option, um die zu sichernde PostgreSQL-Instanz auszuwählen, und es wird automatisch die entsprechende Version von pg_dump ausgewählt:pg_dump --cluster 9.1/main [other pg_dump options]
oder
pg_dump --cluster 9.3/main [other pg_dump options]
.main
ist nur ein Standardwert, führen Sie auspg_lsclusters
, um Ihre tatsächlichen Namen in derCluster
Spalte anzuzeigen.So funktioniert es: Wie von den Ubuntu-Paketen installiert,
/usr/bin/pg_dump
handelt es sich tatsächlich um einen Softlink zu/usr/share/postgresql-common/pg_wrapper
, dessen Zweck es ist, genau die richtige Instanz auszuwählen und die entsprechende Binärdatei auszuführen.--cluster
ist in den Standard-PostgreSQL-Befehlen nicht vorhanden. Es handelt sich um eine Debian / Ubuntu-Ergänzung, mit der dieses Problem mit mehreren Versionen / mehreren Pfaden behoben werden soll.Dies ist das gleiche für
psql
,createdb
,createuser
usw. etwa 18 Postgres Befehle in/usr/bin
durch tatsächlich geschaffenpg_wrapper
.Weitere Informationen finden Sie unter man pg_wrapper .
quelle
version
= Hauptversion von postgresql undmain
= Standardname des Clusters. Siehe die Manpages von pg_lsclusters und pg_wrapper.Sie können verwenden:
um deine Versionen von
pg_dump
in meinem Fall zu finden:/usr/pgsql-9.6/bin/pg_dump
Also können wir als nächstes tun:
um auf das zu aktualisieren, was wir brauchen
quelle