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.

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

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

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.


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'
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.