Próbuję zrzucić bazę danych Postgresql za pomocą narzędzia pg_dump .
$ pg_dump books > books.out
Jak zawsze otrzymuję ten błąd.
pg_dump: server version: 9.2.1; pg_dump version: 9.1.6
pg_dump: aborting because of server version mismatch
Ta --ignore-version
opcja jest teraz przestarzała i naprawdę nie byłaby rozwiązaniem mojego problemu, nawet gdyby zadziałała.
Jak mogę zaktualizować pg_dump, aby rozwiązać ten problem?
postgresql
backup
pg-dump
postgresql-9.2
Chris Colla
źródło
źródło
Odpowiedzi:
Możesz zainstalować PostgreSQL 9.2.1 na
pg_dump
komputerze klienta lub po prostu skopiować go$PGHOME
z serwera PostgreSQL na komputer klienta. Należy zauważyć, że nie ma potrzebyinitdb
tworzenia nowego klastra na komputerze klienckim.Po zakończeniu instalacji oprogramowania 9.2.1 pamiętaj o edycji niektórych zmiennych środowiskowych w swoim
.bash_profile
pliku.źródło
Napotkałem to podczas korzystania z Heroku na Ubuntu, a oto jak to naprawić:
Dodaj repozytorium apt PostgreSQL zgodnie z opisem w sekcji „ Pliki do pobrania dla systemu Linux (Ubuntu) ”. (Istnieją podobne strony dla innych systemów operacyjnych).
Uaktualnij do najnowszej wersji (dla mnie 9.3) za pomocą:
Odtwórz dowiązanie symboliczne w programie
/usr/bin
:Numer wersji w
/usr/lib/postgresql/...
powyższej ścieżce powinien odpowiadaćserver version
numerowi w otrzymanym błędzie. Jeśli więc twój błąd mówipg_dump: server version: 9.9
,, połącz się z/usr/lib/postgresql/9.9/...
.źródło
Sprawdź zainstalowane wersje pg_dump:
Mój wynik był:
Zainstalowano dwie wersje. Aby zaktualizować pg_dump do nowszej wersji:
Spowoduje to utworzenie dowiązania symbolicznego do nowszej wersji.
źródło
locate pg_dump
2>/dev/null
ponieważ spowoduje to wyrzucenie strumienia ERROR zamiast drukowania go na konsoli. Myślę, że powinno się chcieć zobaczyć jakiekolwiek błędy, z wyjątkiem kilku rzadkich przypadków. Na przykład w moim przypadku przypomina mi, że nie byłem rootem, przez co nie udało mi się zobaczyć niektórych katalogów, w których zainstalowano nowszą wersję pg_dump. Ogólnie nie usuwaj błędów.Komputery Mac mają wbudowane
/usr/bin/pg_dump
polecenie, które jest używane domyślnie.Wraz z instalacją postgresql otrzymujesz kolejny plik binarny pod adresem
/Library/PostgreSQL/<version>/bin/pg_dump
źródło
Możesz po prostu zlokalizować
pg_dump
i użyć pełnej ścieżki poleceniaTeraz po prostu użyj ścieżki żądanej wersji w poleceniu
źródło
sudo /usr/pgsql-<version>/bin/pg_dump <database-name> -U <username> -h localhost
Jeśli korzystasz z Ubuntu, możesz mieć zainstalowaną starą wersję
postgresql-client
. Na podstawie wersji w komunikacie o błędzie rozwiązanie byłoby następujące:źródło
Za każdym razem, gdy aktualizujesz lub ponownie instalujesz nową wersję PostgreSQL,
pg_dump
instalowana jest najnowsza wersja .PostgreSQL/bin
Gdzieś w twoim systemie musi znajdować się katalog pod najnowszą wersją PostgreSQL, którą zainstalowałeś (9.2.1 jest najnowsza) i spróbuj uruchomićpg_dump
stamtąd.źródło
Terminal.app
,find / -name pg_dump -type f 2>/dev/null
Dla osób korzystających z Postgres.app :
Dodaj następujący kod do swojego
.bash_profile
:Zrestartuj terminal.
źródło
Dla komputerów Mac z Homebrew. Miałem ten problem podczas pobierania bazy danych z Heroku. Naprawiłem to tylko działając:
źródło
Użytkownicy komputerów Mac powinni umieścić na początku pliku .profile.
następnie uruchomić
źródło
W Ubuntu możesz po prostu dodać najnowsze repozytorium Apt, a następnie uruchomić:
źródło
Jak wyjaśniono, dzieje się tak, ponieważ Twój postgresql jest w starej wersji -> zaktualizuj go dla komputerów Mac przez homebrew:
brew tap petere/postgresql
,brew install <formula>
(np .brew install petere/postgresql/postgresql-9.6
:)Usuń stary postgre:
brew unlink postgresql
brew link -f postgresql-9.6
Jeśli wystąpi jakiś błąd, nie zapomnij przeczytać i postępować zgodnie z instrukcjami parzenia na każdym kroku.
Sprawdź to, aby uzyskać więcej informacji: https://github.com/petere/homebrew-postgresql
źródło
Alternatywna odpowiedź, której chyba nikt inny nie omówił.
Jeśli masz zainstalowanych wiele klastrów PG (tak jak ja), możesz wyświetlić te, które używają
pg_lsclusters
.Na wyświetlonej liście powinna być widoczna wersja i klaster.
Następnie możesz to zrobić:
Oczywiście zamień wersję i nazwę klastra na odpowiednią dla danej sytuacji, z tego, co jest zwracane,
pg_lsclusters
oddzielając wersję i klaster znakiem /. Jest to skierowane do konkretnego klastra, z którym chcesz korzystać.źródło
pg_dump
nie pracowałem nad jedną z moich klastrów. Okazało się, że korzystał z domyślnej wersji Postgresql, gdy jeden z moich klastrów został zaktualizowany do nowszej wersji. Określenie klastra rozwiązało problem.Dla mnie problem polegał na tym, że aktualizacja
psql
apt-get
nie rozwiązała nowszych wersji, nawet późniejupdate
. Następujące działały.Ubuntu
Zacznij od importu klucza GPG dla pakietów PostgreSQL.
Teraz dodaj repozytorium do swojego systemu.
Zainstaluj PostgreSQL na Ubuntu
https://www.postgresql.org/download/linux/ubuntu/
źródło
Jeśli masz zainstalowanego dockera, możesz zrobić coś takiego:
$ docker run postgres:9.2 pg_dump books > books.out
Spowoduje to pobranie kontenera Docker z Postgres 9.2, uruchomienie
pg_dump
wewnątrz kontenera i zapisanie danych wyjściowych.źródło
Odpowiedź brzmi głupio, ale jeśli pojawi się powyższy błąd i chcesz uruchomić pg_dump dla wcześniejszej wersji, przejdź do katalogu bin postgres i wpisz
./pg_dump nazwa_serwera> out.sql ./ ignoruje root i szuka pg_dump w bieżącym katalogu
źródło
Miałem ten sam błąd i tak go rozwiązałem w moim przypadku. Oznacza to, że Twoja wersja postgresql to 9.2.1, ale uruchomiłeś usługę postgresql w wersji 9.1.6.
Jeśli biegniesz
psql postgres
, zobaczysz:psql (9.2.1, server 9.1.6)
To, co zrobiłem, aby rozwiązać ten problem, to:
brew services stop [email protected]
brew services restart [email protected]
Teraz biegnij
psql postgres
i powinieneś mieć:psql (9.2.1)
Możesz także uruchomić,
brew services list
aby zobaczyć stan swoich postgresów.źródło
** po zainstalowaniu postgres wersja jest zgodna (9.2) Utwórz dowiązanie symboliczne lub nowy skrót
** - w „/ usr / bin”
przykład
- jak dzwonić: new_pg_dump -h 192.168.9.88 -U baza danych postgres
źródło
Spróbuj tego:
źródło
Jeśli baza danych jest zainstalowana na innym komputerze, prawdopodobnie ma zainstalowaną poprawną wersję pg_dump. Oznacza to, że możesz wykonać polecenie pg_dump zdalnie za pomocą SSH:
ssh username@dbserver pg_dump books > books.out
Możesz również użyć uwierzytelniania za pomocą klucza publicznego, aby wykonać działanie bez hasła. Kroki, aby to osiągnąć:
źródło
Cóż, miałem ten sam problem, ponieważ mam zainstalowane dwie wersje postgress.
Po prostu użyj odpowiedniego pg_dump i nie musisz niczego zmieniać, w twoim przypadku:
źródło
Jeśli używasz Postgres.app Heroku, pg_dump (wraz ze wszystkimi innymi plikami binarnymi) jest w
/Applications/Postgres.app/Contents/MacOS/bin/
więc w takim razie tak jest
ln -s /Applications/Postgres.app/Contents/MacOS/bin/pg_dump /usr/local/bin/pg_dump
lub
ln -s /Applications/Postgres.app/Contents/MacOS/bin/* /usr/local/bin/.
po prostu złapać je wszystkie
źródło
W przypadku komputerów Mac użyj
find / -name pg_dump -type f 2>/dev/null
znajdź lokalizację pg_dumpU mnie mam następujące wyniki:
Jeśli nie chcesz używać
sudo ln -s new_pg_dump old_pg_dump --force
, po prostu użyj:Applications/Postgres.app/Contents/Versions/9.5/bin/pg_dump
zastąpićpg_dump
w terminaluNa przykład:
Mi to pasuje!
źródło
Pobierz odpowiednią wersję postgres tutaj:
https://www.postgresql.org/download/
Upewnij się, że uruchomiłeś następujące polecenia (adres URL postgresql.org/download wygeneruje określony adres URL do użycia; ten, którego używam poniżej, jest tylko przykładem dla centos 7) jako sudo:
Twoja wersja pg_dump powinna być teraz zaktualizowana, sprawdź za pomocą pg_dump -V
źródło
Podobny problem wystąpił podczas instalacji Fedory 17. Oto, co zrobiłem, aby obejść ten problem
pg_dump
w/usr/bin/pg_dump
(jako root: „rm / usr / bin / pg_dump”)Teraz stwórz symboliczne dowiązanie do instalacji postgresql
Znowu jako root
ln -s /usr/pgsql-9.2/bin/pg_dump /usr/bin/pg_dump
To powinno załatwić sprawę
źródło
/usr/
(zamiast/usr/local/
,/home/
lub/opt/
, gdzie usuwanie rzeczy jest ogólnie w porządku), naprawdę musisz użyć menedżera pakietów -rpm
&yum
lubdpkg
iapt-get
lubaptitude
, w zależności od dystrybucji. Odinstaluj pakiet za pomocąrpm
lub zmieńPATH
zmienną środowiskową w swoim,.bash_profile
aby nowsza wersja została znaleziona jako pierwsza. Jeśli masz wątpliwości, czy coś jest w zarządzaniu pakietami, użyjrpm -qf /path/to/file
(RPM) lubdpkg -S /path/to/file
(dpkg)