Na moim komputerze zainstalowałem dwa serwery PostgreSQL. Jedna to 9,1, a druga 9,3. Potrzebuję obu serwerów zainstalowanych.
Jednak po uruchomieniu pg_dump pojawia się błąd niedopasowania wersji:
server version: 9.3.6; pg_dump version: 9.1.15
pg_dump: aborting because of server version mismatch
Jak mogę to rozwiązać? (Nie można odinstalować żadnej wersji - najpierw zainstalowałem 9.1 i 9.3 wiele miesięcy później - muszę zainstalować oba serwery bazy danych).
postgresql
Luis Masuelli
źródło
źródło
pg_dump
. Oba są zainstalowane, ale tylko jeden jest domyślny. Sprawdźupdate-alternatives
ścieżki lubdpkg -L
pakiet klienta postgresql, aby zobaczyć, gdzie się znajdują. Nie mam natychmiastowego dostępu do okna Ubuntu, aby pokazać siebie.PATH
Następnie musisz zmienić zmienną środowiskową, z którą działa aplikacja.Odpowiedzi:
TL; DR : jeśli oba instancje PostgreSQL są zarządzane przez pakiety Ubuntu (tak jak powinny), wystarczy użyć
--cluster
opcji, aby wybrać instancję PostgreSQL do utworzenia kopii zapasowej, a ona automatycznie wybierze odpowiednią wersję pg_dump:pg_dump --cluster 9.1/main [other pg_dump options]
lub
pg_dump --cluster 9.3/main [other pg_dump options]
.main
jest tylko wartością domyślną, uruchom,pg_lsclusters
aby zobaczyć swoje rzeczywiste nazwy wCluster
kolumnie.Jak to działa: tak jak zainstalowane przez pakiety Ubuntu,
/usr/bin/pg_dump
jest w rzeczywistości miękkim linkiem do/usr/share/postgresql-common/pg_wrapper
, którego celem jest właśnie wybranie właściwej instancji i uruchomienie odpowiedniego pliku binarnego.--cluster
nie istnieje w standardowych poleceniach PostgreSQL, jest to dodatek Debian / Ubuntu, który ma rozwiązać ten problem wielu wersji / ścieżek.To jest taki sam dla
psql
,createdb
,createuser
, itd. Około 18 Postgres komendy w/usr/bin
faktycznie zarządzapg_wrapper
.Zobacz man pg_wrapper, aby uzyskać więcej.
źródło
version
= główna wersja postgresql imain
= domyślna nazwa klastra. Zobacz strony pg_lsclusters i pg_wrapper.Możesz użyć:
znaleźć swoje wersje
pg_dump
w moim przypadku:/usr/pgsql-9.6/bin/pg_dump
następnie możemy zrobić:
w celu aktualizacji do tej, której potrzebujemy
źródło