Pytanie Błąd PostgreSQL "Nie można połączyć się z serwerem: brak takiego pliku lub katalogu"


Tak jak niektóre inne otrzymuję ten błąd, gdy uruchamiam program rake db: migracja w moim projekcie lub nawet wypróbowanie większości zadań związanych z bazą danych Ruby on Rails 3.2 aplikacje.

PGError (nie można połączyć się z serwerem: brak takiego pliku lub katalogu   serwer działający lokalnie i akceptujący połączenia w gnieździe domeny Unix   "/tmp/.s.PGSQL.5432"?

zainstalowałem PostgreSQL z Homebrew dawno temu i po próbie instalacji MongoDB ostatnio moja instalacja PostgreSQL nigdy nie była taka sama. Używam systemu OS X 10.6 Snow Leopard.

Co jest nie tak i jak mogę lepiej zrozumieć, jak PostgreSQL jest i powinien być zainstalowany na moim Macu?

Do tej pory (myślę) to mówi mi, że PostgreSQL nie działa (?).

ps -aef|grep postgres                                                                                                   (ruby-1.9.2-p320@jct-ana) (develop) ✗
  501 17604 11329   0   0:00.00 ttys001    0:00.00 grep postgres

Ale czy to mi mówi, że działa PostgreSQL?

✪ launchctl load -w /usr/local/Cellar/postgresql/9.1.4/homebrew.mxcl.postgresql.plist                                                        (ruby-1.9.2-p136) 
homebrew.mxcl.postgresql: Already loaded

Jak to naprawić? czego nie widzę?

PS: ~/Library/LaunchAgents zawiera dwa pliki .plist PostgreSQL. Nie jestem pewien, czy to jest istotne.

org.postgresql.postgres.plist
homebrew.mxcl.postgresql.plist

Próbowałem następujące i otrzymałem wynik, jak poniżej.

$ psql -p 5432 -h localhost 

psql: could not connect to server: Connection refused
    Is the server running on host "localhost" (127.0.0.1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on host "localhost" (::1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on host "localhost" (fe80::1) and accepting
    TCP/IP connections on port 5432?

Czytałem, ponieważ to się dzieje, ponieważ OS X instaluje własną wersję PostgreSQL, a Homebrew instaluje inną wersję w innym miejscu, a polecenia PostgreSQL szukają w katalogu / tmp /. Będziesz musiał szukać więcej w Stack Overflow, ale w zasadzie dowiązujesz symbolicznie PostgreSQL, tak aby cokolwiek szukającego w tej ścieżce tmp faktycznie znajdowało prawdziwą ścieżkę, jeśli to ma sens.

To jest link, w którym znalazłem kilka dodatkowych rzeczy do wypróbowania, konkretnie robi to dowiązanie symboliczne, jak wyżej, Mac OSX Lion Postgres nie akceptuje połączeń w /tmp/.s.PGSQL.5432. Nadal chciałbym, aby ktoś zebrał solidne wyjaśnienie koncepcji instalacji PostgreSQL na OS X i dlaczego to wszystko jest takie trudne.

Najnowsze informacje, które pomogą rozwiązać problem:

$ which psql // This tells you which PostgreSQL you are using when you run $ psql. 

Następnie uruchomić:

$ echo $PATH

Kluczową rzeczą, którą należy wziąć pod uwagę, jest:

Upewnij się, że wpis ścieżki dla kopii PostgreSQL, którą chcesz uruchomić, PRZED ścieżką do PostgreSQL systemu OS X.

Jest to podstawowe wymaganie, które decyduje o tym, który PostgreSQL uruchamia się i jest to, co mi powiedziano, prowadzi do większości z tych problemów.


125
2017-09-18 08:19


pochodzenie


Czy kiedykolwiek znalazłeś rozwiązanie tego problemu? Widzę, że go nie zaznaczyłeś. Żadna z nich mi również nie pomaga. - Andras Gyomrey
Wciąż jest to głównie vodoo i dziwne inkarnacje, które sprawiają, że działa. Właśnie dodałem [Edytuj 2] powyżej z linkiem z kilkoma dodatkowymi sugestiami i jak zrobić dowiązanie symboliczne jak na moje komentarze do edycji. Symlink pracował dla mnie w końcu, ale wydaje mi się, że po drodze odinstalowałem i ponownie zainstalowałem pliki PostgreSQL i Homebrew, tak więc trudno było dokładnie określić, co się zmieniło. Powodzenia. Zgłoś się, jeśli odkryjesz coś nowego, z 15 000 odsłon na to pytanie, to daje wiele bólu! - Evolve
@AndrasGyomrey Właśnie wróciłem z RailsCamp15 w Australii i ludzie powiedzieli, że kluczem jest poprawienie pliku ścieżki, edytowałem w Edit 3 powyżej, aby to wyjaśnić. - Evolve
Należy pamiętać, że program launchctl zgłaszający coś jako załadowany NIE musi oznaczać, że jest uruchomiony. Powinieneś rzucić okiem bigsql.com jako alternatywa; działa na Macu i ma dobry interfejs zarządzania. - Jim Nasby


Odpowiedzi:


Sprawdź, czy nie ma postmaster.pid w Twoim katalogu postgresowym /usr/local/var/postgres/ 

usuń to i uruchom serwer.

Sprawdź - https://github.com/mperham/lunchy to świetne opakowanie dla launchctl.


96
2018-02-25 13:24



To działało dla mnie. Właśnie zainstalowałem yosemite i załadowałem postgres z homebrew. Dobrze działał po raz pierwszy użyłem go, ale miał ten problem po ponownym uruchomieniu. Czy możesz wyjaśnić, dlaczego to zadziałało? - Dan Williams
pracował dla mnie, ale dla nowicjuszy, ktoś może wyjaśnić, dlaczego i jak jest to bezpieczne - Alexander Mills


AKTUALIZACJA: TUTAJ JEST LEPSZY POPRAWA, JEŚLI NA OSX ...

http://postgresapp.com/


Stara odpowiedź:

Tutaj jest poprawka, więcej informacji tutaj:

https://github.com/mxcl/homebrew/issues/5004

Najpierw zatrzymaj db, a następnie

  1. cd / var
  2. rm -r pgsql_socket
  3. ln -s / tmp pgsql_socket
  4. chown _postgres: _postgres pgsql_socket
  5. uruchom ponownie PostgreSQL (nie twój komputer)

56
2018-01-29 21:11



Błędy wróciły do ​​mnie i ta poprawka nie pomogła. Czuję, że wałęsam się w ciemnym pokoju, aby zrozumieć, co się właściwie dzieje i sam proces zastosowania poprawki. Czy mógłbyś wyjaśnić, w jaki sposób mogę zdiagnozować i rozwiązać ten problem? - Evolve
Pracował dla mnie! Dzięki! - sgonzalez
Pracuje dla mnie. Czuje się trochę dziwnie /tmp do _postgres, ale hej :) - wrdevos
postgresapp.com jest niesamowite! Wystarczy zainstalować i naprawić wszystkie problemy! - Sergey Alekseev
Wielkie litery nie stanowią lepszej odpowiedzi. Wciąż jest całkiem dobrze zainstalować i uruchomić Postgres przez Homebrew (usługi.) - Drenmi


Dla mnie to działa

rm /usr/local/var/postgres/postmaster.pid

42
2018-01-05 14:26



W moim przypadku, po usunięciu pid, musiałem zrestartować postgresql z pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start - Obromios
Musiałem również zrestartować PostgreSQL, po zainstalowaniu przez homebrew, możesz to zrobić tak: brew services restart postgresql - santuxus
Jestem w środowisku docker env No such file or directory w moim przypadku - Sarz


Dla powyższego błędu, o którym wspomniałeś, to działa dla mnie ..

1) ewentualnie zmienić domyślny port nie określony w pliku postgres.conf, jeśli podczas instalacji wymieniono inny port niż domyślny nr 5432.

(LUB)

2) Zmień nr portu w pliku postgresql.conf i zrestartuj serwer DB

(LUB)

3) zamiast pełnych poleceń typu psql jak

"psql -p 5432 -h localhost"

  • nazwa serwera i nr portu

14
2017-09-18 10:17



1. Myślę, że moja instalacja byłaby zgodna z domyślnymi ustawieniami. - Evolve
2. Mogę to zmienić, jakiekolwiek konsekwencje zmiany portu? - Evolve
3. Dodałem moje dane wyjściowe z 3 powyżej. - Evolve
dla mnie opcja 3 działała prawidłowo .. - solaimuruganv
Opcja 3 działała z niestandardowym portem. Ponieważ mam zainstalowane wiele serwerów pg (PostgreSQL 9.1, 9.2 i 9.3), musiałem wskazać odpowiedni psql. - gpasse


Jeśli używasz Homebrew, odinstaluj Postgresql end pg gems: *

$ gem uninstall pg
$ brew uninstall postgresql

Pobierz i uruchom następujący skrypt, aby poprawić uprawnienia w / usr / local: * https://gist.github.com/rpavlik/768518

$ ruby fix_homebrew.rb

Następnie zainstaluj ponownie PostgreSQL i pg gem: *

$ brew install postgresql  
$ initdb /usr/local/var/postgres -E utf8

Aby uruchomić uruchomienie postgresql przy uruchomieniu logowania: 

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

Lub zacznij ręcznie.

Zainstaluj pg gem 

$ gem install pg

Mam nadzieję, że pomogłem


10
2018-05-22 13:53



Od brew info postgres: ARCHFLAGS="-arch x86_64" gem install pg - wrdevos
czy to nie usunie rekordów w db? - kibaekr
initdb /usr/local/var/postgres -E utf8 Prace. Wielkie dzięki. - Chris Jeon


Miałem ten problem, gdy uaktualniłem PostgreSQL do 9.3.x. Szybka korekta była dla mnie obniżeniem do wersji 9.2.x, którą miałem wcześniej (nie trzeba instalować nowej).

$ ls /usr/local/Cellar/postgresql/
9.2.4
9.3.2
$ brew switch postgresql 9.2.4
$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
<open a new Terminal tab or window to reload>
$ psql

To odpowiedź oferuje znacznie bardziej wyczerpujące wyjaśnienie oraz alternatywne sposoby rozwiązania problemu.


8
2017-12-30 13:41



Dzięki za wkład i jasne instrukcje, aby powtórzyć poprawkę. Ten link, który zawierasz, jest obszerny, nie mam obecnie problemów z postgresiem, więc nie jestem pewien, jak bardzo jest to przydatne dla innych, ale dla każdego, kto uzna to za przydatne, skomentuj tutaj. - Evolve
Uważam, że jest przydatny i trafny, choć może nie bezpośrednio. Rozwiązał problem, zmieniając tylko wersje, używając brew, który jest dość powszechnym narzędziem, i po prostu powtórzył kroki, jak dotąd, świetnie, link dostaje więcej problemów związanych z naparami, więc widzę twoje pytanie o jego wartość w kontekście pytania OP. - wkhatch


Kiedy biegniesz: psql -p 5432 -h localhost nie korzysta ze sterownika pętli zwrotnej, ale używa prawdziwego gniazda, a zatem musisz skonfigurować PostgreSQL, aby akceptował połączenia z gniazdem. Stąd, mimo że pgadmin i inni klienci mogą działać, psql nie będzie.

Musisz zmienić zarówno plik postgresql.conf, jak i plik pg_hba.conf, aby umożliwić połączenie przez prawdziwe gniazdo. Umożliwi to również połączenie ze zdalnego adresu IP, dlatego domyślnie jest wyłączone.

Pliki te znajdują się w katalogu danych, ale rzeczywista lokalizacja może się różnić w zależności od sposobu instalacji PostgreSQL. Po uruchomieniu modułu postgres uruchom polecenie:

ps -ef | grep postmaster

Te dwa pliki to katalog -D (może / usr / local / pgsql / data).

W przypadku pliku postgresql.conf odkomentuj listę listen_address i zmień ją na:

listen_address = '*'

Dla pg_hba.conf dodaj linię:

host all all 0.0.0.0/0 md5

4
2017-10-21 01:36





Tak więc w przypadku wielu problemów wydaje się, że ludzie już pracowali na psql i musieli go usunąć postmaster.pid. Jednak nie miałem tego problemu, ponieważ nigdy nie zainstalowałem poprawnie PostgreSQL w moim systemie.

Oto rozwiązanie, które sprawdziło się w MAC OSX Yosemite

  1. Poszłam do http://postgresapp.com/ i pobrać aplikację.
  2. Przeniosłem aplikację do katalogu Application /
  3. Dodałem go do $ PATH, dodając to do .bashrc lub .bash_profile lub .zshrc: export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin
  4. Uruchomiłem postgres z katalogu Applications i ponownie uruchomiłem polecenie, co zadziałało.

Mam nadzieję że to pomoże! Toodles!

Ta odpowiedź pomogła mi najbardziej: https://stackoverflow.com/a/21503349/3173748


4
2018-03-16 22:09



Czy nie wskazuje to na aplikację Postgres, a nie na napar? To może odciąć cię od niektórych pomocnych pakietów (np. Pgrouting, których nie możesz zainstalować dla aplikacji Postgres, która spowodowała mi niekończący się żal i oto jestem teraz) - allthesignals


Naprawdę nie znam Maca ani Homebrew, ale znam PostgreSQL bardzo dobrze.

Chcesz dowiedzieć się, gdzie są logi z PostgreSQL próbuje uruchomić i co to jest katalog gniazd dla PostgreSQL. Domyślnie, gdy budujesz PG, katalog gniazd to / tmp /. Jeśli nie zmieniłeś tego, kiedy zbudowałeś PG, a następnie uruchomiłeś PG, powinieneś móc zobaczyć plik gniazda w / tmp, jeśli: ls -al / tmp

Plik gniazda zaczyna się od ".", Więc nie zobaczysz go z "-a" do ls.

Jeśli nie widzisz tam gniazda, a nie widzisz niczego z ps aux | grep postgres, a następnie PG prawdopodobnie nie działa, a może jest i jest zainstalowany na systemie OSX. Może się zdarzyć, że może pojawić się konflikt w odsłuchu na porcie 5432 na hoście localstat - use netstat -anp, aby zobaczyć, co, jeśli w ogóle, nasłuchuje na 5432. Jeśli Mac OSX PG nasłuchuje na tym porcie, to może to być problemem.

Nadzieja, która pomaga. Słyszałem, że homebrew może sprawić, że sytuacja będzie trochę brzydka, a wielu ludzi, z którymi rozmawiałem, zachęca do używania VM.


2
2017-12-18 03:04



Dziękuję za przyczynienie się do tego. Jeśli pomoże ci to nieco więcej, homebrew po prostu uruchamia ten skrypt podczas instalacji PostgreSQL. github.com/Homebrew/homebrew-core/blob/master/Formula/... Mam nadzieję, że możesz rzucić okiem i ewentualnie podzielić się spostrzeżeniami z tego, co znajdziesz. To, co myślę, że ludzie potrzebują, jest prostszym sposobem debugowania, dlaczego dostają ten błąd, aby wiedzieli, jakie działania podjąć. - Evolve
W oparciu o to, co mogę zrozumieć, skrypt ten zawiera "postgres.log" w katalogu "var", prawdopodobnie pod HOMEBREW_PREFIX. Ten plik dziennika będzie zawierał informacje o próbie uruchomienia PG (włączając w to, czy z jakiegoś powodu nie udało się uruchomić). Oto przykładowy komunikat informujący o tym, że uruchomienie PG nie powiodło się z powodu innego procesu nasłuchującego na porcie 5432: - Stephen Frost
2016-12-19 09: 11: 59.582 EST [20669] LOG: nie można związać gniazda IPv4: Adres już w użyciu 2016-12-19 09: 11: 59.582 EST [20669] WSKAZÓWKA: Czy inny postmaster już działa na porcie 5432 ? Jeśli nie, poczekaj kilka sekund i spróbuj ponownie. 2016-12-19 09: 11: 59.582 EST [20669] OSTRZEŻENIE: nie można utworzyć gniazda nasłuchiwania dla "localhost" 2016-12-19 09: 11: 59.582 EST [20669] FATAL: nie można utworzyć żadnych gniazd TCP / IP 2016 -12-19 09: 11: 59.582 EST [20669] LOG: system bazy danych jest zamknięty - Stephen Frost
Ponadto wygląda na to, że skrypt nie zmienia domyślnego katalogu gniazd, więc powinno to być / tmp /. Możesz przejrzeć katalog danych PG (który wygląda na {HOMEBREW_PREFIX} / var / postgres) dla pliku postgresql.conf i wyszukać "unix_socket_directories". Domyślnie jest to skomentowane, ale ma domyślny zestaw, np .: - Stephen Frost
#unix_socket_directories = '/ tmp # # oddzielona przecinkami lista katalogów - Stephen Frost


Powód

Lion ma zainstalowaną wersję PostgreSQL i domyślnie używa tych plików binarnych. Ogólnie można obejść ten problem, korzystając z pełnej ścieżki do plików binarnych PostgreS homebrew, ale mogą występować problemy z innymi programami.

Rozwiązanie

kędzior http://nextmarvel.net/blog/downloads/fixBrewLionPostgres.sh | sh

Przez

http://nextmarvel.net/blog/2011/09/brew-install-postgresql-on-os-x-lion/


1
2017-07-22 04:03





Witaj świecie :)
Najlepszym, ale dziwnym sposobem dla mnie było robienie kolejnych rzeczy.

1) Pobieranie postgres93.app lub inną wersję. Dodaj tę aplikację do folderu / Applications /.

2) Dodaj wiersz (polecenie) do pliku .bash_profile (który znajduje się w moim katalogu domowym):

export PATH = / Applications / Postgres93.app / Contents / MacOS / bin /: $ PATH
To jest PATH do psql od Postgres93.app. Wiersz (polecenie) uruchamia się za każdym razem, gdy uruchamiana jest konsola.

3) Uruchomić Postgres93.app od /Applications/ teczka. Zaczyna lokalny serwer (port to "5432", a host to "localhost").

4) Po tych wszystkich manipulacjach ucieszyłem się, uciekając $ createuser -SRDP user_name i inne polecenia i zobaczyć, że zadziałało! Postgres93.app może być uruchamiany przy każdym uruchomieniu systemu.

5) Również jeśli chcesz zobaczyć swoje bazy danych graficznie, powinieneś zainstalować PG Commander.app. To dobry sposób, aby zobaczyć DB postgres jako ładne tabele danych

Oczywiście, jest to przydatne tylko dla lokalnego serwera. Będę zadowolony, jeśli ta instrukcja pomoże innym, którzy mieli do czynienia z tym problemem.


1
2018-02-01 20:31