Jak zaktualizować bazę danych Postgresl? Błąd niezgodności

26

Zainstalowałem postgresql przez Homebrew.

Po aktualizacji mam następujący problem:

FATAL: database files are incompatible with server DETAIL: The data directory was initialized by PostgreSQL version 9.0, which is not compatible with this version 9.1.2.

Wszelkie wskazówki dotyczące aktualizacji? Próbowałem następujące:

$ pg_upgrade -d /usr/local/var/postgres/ -D /usr/local/var/postgres -b 
/usr/local/Cellar/postgresql/9.0.4/bin -B /usr/local/Cellar/postgresql/9.1.2/bin

Nie działało. Oto wynik.

Performing Consistency Checks
Checking current, bin, and data directories                 ok
Checking cluster versions                                   
This utility can only upgrade to PostgreSQL version 9.1.
Failure, exiting

błąd.

Daniel Fischer
źródło

Odpowiedzi:

36

Dla mnie na OS X z Homebrew było tak.

  1. Zainstalowałem nowe postgresy z Homebrew (zaczął pojawiać się błąd)
  2. mv /usr/local/var/postgres /usr/local/var/postgres.old
  3. initdb -D /usr/local/var/postgres
  4. pg_upgrade -b /usr/local/Cellar/postgresql/9.0.4/bin -B /usr/local/Cellar/postgresql/9.1.2/bin -d /usr/local/var/postgres.old -D /usr/local/var/postgres
  5. ./delete_old_cluster.sh (ten skrypt jest tworzony automatycznie w bieżącym katalogu po przejściu przez powyższe kroki)
  6. rm delete_old_cluster.sh
Max Chernyak
źródło
Fantastyczny i właśnie to, czego potrzebowałem przyjacielu! dzięki. Zwłaszcza po ulepszeniu Lwa pochodzącego ze Snow Leopard. Sprawdź server.log google people !!
pjammer
Działa to dla mnie idealnie, dzięki! Zauważ, że postgres nie musi być uruchomiony przed wykonaniem tych kroków, więc jeśli masz zainstalowany przez Homebrew upewnij się, aby rozładować uruchamiania agenta, który sprawia, że uruchamia się automatycznie: launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist. Po wykonaniu wszystkich powyższych kroków po prostu załaduj go ponownie:launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Markus Amalthea Magnuson
6

Oto jak to zrobiłem na Fedorze:

  • zmień nazwę swojego starego katalogu danych na coś takiego jak data.old
  • Uruchom postgresql-setup initdbto utworzy nowy katalog danych
  • następnie uruchomić pg_upgrade -b /usr/lib64/pgsql/postgresql-9.0/bin/ -B /usr/bin/ -d data.old/ -D data

Myślę, że dla ciebie byłoby to:

pg_upgrade -b /usr/local/Cellar/postgresql/9.0.4/bin -B /usr/bin/ -d /usr/local/var/postgres.old/ -D /usr/local/var/postgres/
  • chcesz również skopiować pg_hba.conf i postgresql.conf z data.old do nowego katalogu danych.
  • uruchom ponownie postgresql
imel96
źródło
1

Przegapiłem / zapomniałem wiersza „initdb”

initdb -D / usr / local / var / postgres

Po utworzeniu bazy danych pg_upgrade działał w moim systemie Windows.

użytkownik321204
źródło
0

W przypadku Arch Linux istnieje rozwiązanie na wiki, które działało dobrze dla mnie:

pacman -S --needed postgresql-old-upgrade
su -
su - postgres -c 'mv /var/lib/postgres/data /var/lib/postgres/data-9.2'
su - postgres -c 'mkdir /var/lib/postgres/data'
su - postgres -c 'initdb --locale en_US.UTF-8 -E UTF8 -D /var/lib/postgres/data'
su - postgres -c 'pg_upgrade -b /opt/pgsql-9.2/bin/ -B /usr/bin/ -d /var/lib/postgres/data-9.2 -D /var/lib/postgres/data'
Rudy Matela
źródło