2013-07-23 10 views
58

Po ponownym mój MacBook Pro nie jestem w stanie uruchomić serwer bazy danych:Postgres - FATAL: pliki bazy danych są niezgodne z serwerem

could not connect to server: No such file or directory 
Is the server running locally and accepting 
connections on Unix domain socket "/tmp/.s.PGSQL.5432"? 

Sprawdziłem logi i następujący wiersz pojawia się w kółko:

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

9.0.4 była wersją, która została fabrycznie zainstalowana na komputerze Mac, 9.2 [.4] to wersja, którą zainstalowałem przez Homebrew. Jak już wspomniano, działało to przed restartem, więc nie może to być problem kompilujący. Ponownie przetestowałem numer initdb /usr/local/var/postgres -E utf8, a plik nadal istnieje.

Niestety, jestem całkiem nowy dla Postgres, więc każda pomoc będzie bardzo ceniona.

+1

Jak rozpocząć postgres? Jesteś pewien, że Twój skrypt startowy wskazuje na nową wersję? Ponieważ na podstawie komunikatów o błędach uważam, że obie wersje są teraz zainstalowane obok siebie. – fvu

+0

'pg_ctl -D/usr/local/var/postgres -l /usr/local/var/postgres/server.log start' - a odpowiedzią jest' server starting' – klaffenboeck

+1

Podczas wyszukiwania plików o nazwie 'pg_ctl' I ' Jestem pewien, że znajdziesz 2 kopie. A tą, która pasuje do 'której pg_ctl' będzie stara wersja, a druga będzie nową wersją. – fvu

Odpowiedz

33

Spróbuj tego: https://gist.github.com/joho/3735740

To działało idealnie dla mnie. Na koniec generuje również 2 skrypty bashowe do sprawdzenia bazy danych i usunięcia starego klastra. Naprawdę niesamowite.

patrz: http://www.postgresql.org/docs/9.2/static/pgupgrade.html aby zrozumieć więcej.

+2

Sprawdził się doskonale przy migracji z 9.4 na 9.5 – tftdias

+0

Pracował także dla mnie z migracją z 9.3.4 do 9.5.2 –

+1

Oto kroki aktualizacji 9.5.5 do 9.6.1 przy użyciu Homebrew (macOS): https://gist.github.com/giannisp/b53a76047b07751ed3ade3c1db1d2c51 – Giannis

111

Jeśli szukasz opcji jądrowej (usunięcie wszystkich danych i dostać świeże bazy danych), można zrobić:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8

a następnie będziesz musiał rake db:setup i rake db:migrate z aplikacji Rails aby ponownie zainstalować.

+3

Jeśli powyższe informacje nadal nie działają (tak było w moim przypadku), spróbuj podać nazwę nowego katalogu danych dla initdb, np./usr/local/var/postgres95. – mpelzsherman

+0

btw, zaraz po tym będziesz prawdopodobnie musiał uruchomić 'createuser -s your_rails_app', aby utworzyć użytkownika postgrera dla szyn. Zobacz https://stackoverflow.com/questions/11919391/postgresql-error-fatal-role-username-does-not-exist/25263322 – Meekohi

4

Znaleziono w Internecie to rozwiązanie działa dobrze dla mnie.

Kiedy próbowałem uruchomić serwera PostgreSQL po aktualizacji do OS X 10.10 Yosemite, ja spotkałem się z kolejnym problemem:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start 

nie może połączyć się z serwerem: Nie ma takiego pliku lub katalogu Czy serwer działa lokalnie i akceptowanie połączeń w gnieździe domeny Unix "/var/pgsql_socket/.s.PGSQL.5432"? Ok, pozwala spojrzeć w logi serwera:

cat /usr/local/var/postgres/server.log 

FATAL: pliki bazy danych są niezgodne z serwerem szczegół: katalog danych został zainicjowany przez PostgreSQL w wersji 9.2, który nie jest zgodny z tą wersją 9.3.5. Tak, musimy wykonać kilka kroków po aktualizacji PostgreSQL:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist 

mv /usr/local/var/postgres /usr/local/var/postgres92 

brew update 

brew upgrade postgresql 

initdb /usr/local/var/postgres -E utf8 

pg_upgrade -b /usr/local/Cellar/postgresql/9.2.3/bin -B /usr/local/Cellar/postgresql/9.3.5_1/bin -d /usr/local/var/postgres92 -D /usr/local/var/postgres 

cp /usr/local/Cellar/postgresql/9.3.5_1/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents/ 

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start 

rm -rf /usr/local/var/postgres92 

to wszystko.

+1

Użyłem powyższych kroków, aby dokonać aktualizacji z 9.53 na 10.0. Polecenie pg_upgrade zostało nieco zaktualizowane. Nowe polecenie to pg_upgrade -b /usr/local/Cellar/postgresql/9.5.3/bin/ -B /usr/local/Cellar/postgresql/10.0/bin -d/usr/local/var/postgres95 -D/usr/local/var/postgres – techvineet

Powiązane problemy