PostgreSQL nie działa na Macu


55

Błąd w całości brzmi:

psql: nie można połączyć się z serwerem: brak takiego pliku lub katalogu. Czy serwer działa lokalnie i akceptuje połączenia w gnieździe domeny uniksowej „/tmp/.s.PGSQL.5432”?

To mój drugi raz, kiedy konfiguruję Postgresql przez Homebrew na moim Macu i nie mam pojęcia, co się dzieje. Wcześniej działało. W pewnym momencie musiałem wprowadzić polecenie, które pomieszało sprawę. Nie jestem pewny. Teraz, ilekroć wprowadzę polecenie SQL z wiersza poleceń, otrzymuję powyższy komunikat. Uruchomiłem polecenie, aby sprawdzić, czy serwer działa i najwyraźniej tak nie jest. Jeśli spróbuję uruchomić serwer przy użyciu

$ postgres -D / usr / local / pgsql / data

Otrzymuję następujący błąd:

postgres nie może uzyskać dostępu do pliku konfiguracyjnego serwera „/usr/local/pgsql/data/postgresql.conf”: Brak takiego pliku lub katalogu

Odinstalowałem i ponownie zainstalowałem Postgresql przez Homebrew, ale problem nadal występuje. Nie mam pojęcia, jak to działa. Każda pomoc będzie mile widziana.

Odpowiedzi:


51

Problem można również przypisać zawieszeniu procesu, który pozostawił postmaster.pidplik.

$ brew services stop postgresql
$ rm /usr/local/var/postgres/postmaster.pid # adjust path accordingly to your install
$ brew services start postgresql

4
W MacOSX ta odpowiedź mnie uratowała. Miałem ten sam błąd co OP po ponownym uruchomieniu komputera. brew servicesPolecenia nie były pomocne, ponieważ zrobili to wydaje się, że wszystko działa. Usunięcie postmaster.pidjest tym, co w końcu sprawiło, że wszystko znów działa. Dzięki!
vinhboy

1
To mi się też przydarzyło. Ostra awaria systemu Mac OS X spowodowała ponowne uruchomienie, po tym Postgres nie pojawił się. Start / stop / restart usług piwowarskich nie działa, musisz ręcznie usunąć plik pid.
Matthijs

Zalecanym sposobem byłoby oczywiście uruchomienie Postgresa w kontenerze dokowanym. Bardzo łatwy do uruchomienia i wszystko jest sprzątane, gdy pojemnik jest wyłączony. Powiedziałbym, że uruchamianie aplikacji innych firm w kontenerze dokerów powinno być obecnie de facto.
demisx

43

Odpowiedź jest tutaj .

Uruchom to polecenie, aby ręcznie uruchomić serwer:

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

14

Robiłem się tak samo

Is the server running locally and accepting connections on Unix domain 
socket "/tmp/.s.PGSQL.5432"?

pętla instalacji / uruchomienia / zatrzymania / restartu Homebrew bezskutecznie ...

Wreszcie brew postgresql-upgrade-databasedziałało.

Wygląda na to, że miałem 9.6 zamiast 10.4 i coś, co mój ostatni restart App Store zrestartował wszystkie moje serwery baz danych ...


to zadziałało dla mnie
David

Tego brew postgresql-upgrade-databasemi brakowało. Dzięki za zwrócenie na to uwagi.
Corin

Pracował dla mnie dzięki!
Erwin Rooijakkers

Wypróbowałem wszystkie rozwiązania. Ale to był jedyny, który dla mnie działał. Byłoby wspaniale wiedzieć, czy ktoś mógłby wyjaśnić, dlaczego to całkowicie rozwiązało.
JohnnyQ

11

Właśnie rozwiązałem ten sam problem. To właśnie dlatego, że zapomniał się go uruchomić prawidłowo przed użyciem.

W przypadku czystej instalacji postgresql w systemie Mac OS proces będzie następujący (za pomocą polecenia brew ):

brew install postgresql

to jeśli chcesz automatycznie uruchamiać się postgresqlprzy logowaniu:

ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents

lub po prostu chcesz go uruchomić w dowolnym momencie:

postgres -D /usr/local/var/postgres

Jeśli twoja sprawa jest bardziej skomplikowana, powtórzmy brew uninstall postgresqlte kroki.

Mam nadzieję, że to pomoże!


1
Aktualizacja: dla postgresów zainstalowanych przez Homebrew, brew services start postgresqljest teraz preferowanym sposobem uruchamiania postgresów przy logowaniu
Henry

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

Nadal otrzymywałem powyższy błąd i żadne z powyższych rozwiązań nie działało dla mnie. Wreszcie poniższe rozwiązanie rozwiązało mój problem w systemie Mac OS X

Zainstaluj postgres za pomocą naparu

brew install postgres

Zainstaluj usługi parzenia

brew tap homebrew/services

Aby uruchomić Postgres jako usługę w tle

brew services start postgresql

Aby ręcznie zatrzymać postgres

brew services stop postgresql

Możemy również skorzystać z usług browarniczych w celu ponownego uruchomienia Postgres

brew services restart postgresql

2

Dzieje się tak, gdy serwer Postgres nie działa. Kroki, aby poprawnie zainstalować Postgres przez Homebrew na MAC:

  1. brew install postgres

  2. initdb /Users/<username>/db -E utf8 [Inicjuje to postgres, aby użyć podanego katalogu jako katalogu bazy danych. Zwykle nie zaleca się używania katalogu użytkownika do przechowywania bazy danych. Edytuj plik sudoers, aby dodać initdb i podobne polecenia, a następnie uruchom initdb na / usr / local / var / postgres]

  3. pg_ctl -D /Users/<username>/db -l logfile start [Po osiągnięciu sukcesu w kroku 2 pojawi się monit o uruchomienie kroku 3. To polecenie ręcznie uruchamia serwer.]


2

To zadziałało dla mnie. Zmień katalog postgresql zgodnie z wersją w systemie.

Wspólna ścieżka rm /usr/local/var/postgres/postmaster.pid

ale dla postgresql@9.6 w mojej ścieżce systemowej jest rm /usr/local/var/postgresql@9.6/postmaster.pid

uruchom ponownie postgresql@9.6- brew services restart postgresql@9.6


tak, to JEDEN, który działa!
PirateApp

1

Po prostu odkomentowałem w /etc/postgresql/9.5/main/postgresql.conf

unix_socket_permissions = 0777

i uruchom ponownie postgres. I dla mnie to działa.


1

ostatnio przeszedłem podobny problem. jest tylko kolejny problem i rozwiązanie. Korzystałem z 2 wersji postgres (9.3 i 9.6), chociaż serwer był ustawiony na działanie na 2 różnych portach, ale trochę jak polecenie psql w bash próbuje połączyć się z domyślnym portem 5432. Upewnij się, czy serwer działa i sprawdź ustawienia portu, a następnie uruchom psql -p <port> postgres. Rozwiązaniem jest zmiana portu.


1

Długo szukałem, a to było najbardziej czyste i schludne rozwiązanie:

Niedawno zaktualizowałem Postgres z wersji 9.2 do 9.3 za pomocą aktualizacji postgres. Proces przebiegał sprawnie, a pg_upgrade to bardzo przydatne narzędzie.

Jednak kłopoty pojawiły się, gdy próbowałem uruchomić specyfikacje potrzebne do połączenia z Postgres. Mimo że Postgres na pewno działał, nagle dostałem:

nie można połączyć się z serwerem: Brak takiego pliku lub katalogu (PG :: ConnectionBad) Czy serwer działa lokalnie i przyjmuje połączenia w gnieździe domeny uniksowej „/var/pgsql_socket/.s.PGSQL.5432”? Problem polegał na tym, że nowa wersja Postgres nasłuchuje na /tmp/.s.PGSQL.5432. Mogłem pomieszać z konfiguracją i sprawić, by Postgres używał wcześniejszego gniazda domeny lub powiedział Railsom wyraźnie, jak się połączyć, ale oba te podejścia wydawały się pracą, której nie powinienem robić. W żadnym momencie nie powiedziałem Railsom, aby łączył się z postgres na tej ścieżce, Railsy to założyły, a teraz jego założenia były błędne.

Poprawka jest prosta, jeśli trochę zaskakująca. Po zainstalowaniu klejnotu „pg” wykrywa, która wersja Postgres jest zainstalowana i odpowiednio ustawia ścieżkę gniazda domeny. Rozwiązanie jest tak proste, jak ponowna instalacja klejnotu. $ gem uninstall pg $ cd my-rails-app/ $ bundle install

http://daniel.fone.net.nz/blog/2014/12/01/fixing-connection-errors-after-upgrading-postgres/


1
Proszę edytować swoje odpowiedzi, więc zapewnia wartość, jeśli link przestanie działać . Wskazówki na temat tego, jak to zrobić poprawnie, można znaleźć w Odwołanie do materiałów napisanych przez innych . Dziękuję Ci.
Paul White

0

zaktualizuj go za pomocą polecenia

  brew postgresql-upgrade-database

jeśli występuje następujący błąd Polecenie „napar” nie zostało znalezione, ale można je zainstalować za pomocą: sudo apt install linuxbrew-wrapper

następnie zainstaluj go za pomocą polecenia

 sudo apt install linuxbrew-wrapper

-3

Poniższe kroki pomagają mi:

brew odinstaluj postgresql brew zainstaluj postgresql brew postgresql-upgrade-database

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.