Brak pliku gniazda /var/pgsql_socket/.s.PGSQL.5432 w Mountain Lion (serwer OS X)

Właśnie zaktualizowałem mój serwer MacMini z Lion Server do Mountain Lion przy użyciu OS X Server. Mam ten sam problem z PostgreSQL, który miałem w zeszłym roku, kiedy po raz pierwszy zainstalowałem Lion Server.

Kiedy próbuję wykonać dowolne polecenie terminala PostgreSQL, otrzymuję następujący notoryczny komunikat o błędzie, który wiele osób otrzymywało przez lata:

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"?

Próbowałem zmienić hasło do _postgres, gdy otrzymałem błąd. Próbowałem kilku poleceń, ale otrzymałem ten sam błąd. Właśnie zrestartowałem serwer, ale bez powodzenia. Zalogowałem się jako root, aby zajrzeć do /var/pgsql_socket i folder jest pusty. Folder /var/pgsql_socket_alt również jest pusty.

Sprawdziłem w Internecie na ten temat. Jednak prawie wszystkie rozwiązania, które przeczytałem, w tym Stack Overflow, sugerują usunięcie i ponowną instalację PostgreSQL. Nie wiem, ale nie wydaje się to prawdopodobną opcją, ponieważ kilka opcji w aplikacji serwera używa PostgreSQL. Skontaktowałem się ze wsparciem Apple Enterprise (bez umowy) i powiedziano mi, że mój problem będą musieli rozwiązać programiści, co będzie kosztować 695 USD.

Mam witrynę internetową, która obecnie nie działa, ponieważ nie mogę jej odbudować. Nie wiem już gdzie się w tej sytuacji zwrócić o pomoc. Będę dalej szukać w internecie, może coś znajdę. Mam jednak nadzieję, że ktoś szybko udzieli mi odpowiedzi, abym mógł odbudować bazę danych.

Aktualizacja: 13.12.2012, 15:33 GMT-6

Oto moje dane wyjściowe dla ps auwx|grep postg:

_postgres      28123   0.0  0.1  2479696   7724   ??  Ss    3:01PM   0:00.04 /Applications/Server.app/Contents/ServerRoot/usr/bin/postgres_real -D /Library/Server/PostgreSQL For Server Services/Data -c listen_addresses= -c log_connections=on -c log_directory=/Library/Logs/PostgreSQL -c log_filename=PostgreSQL_Server_Services.log -c log_line_prefix=%t  -c log_lock_waits=on -c log_statement=ddl -c logging_collector=on -c unix_socket_directory=/Library/Server/PostgreSQL For Server Services/Socket -c unix_socket_group=_postgres -c unix_socket_permissions=0770
server1        28216   0.0  0.0  2432768    620 s000  R+    3:02PM   0:00.00 grep postg
_postgres      28138   0.0  0.0  2439388    752   ??  Ss    3:01PM   0:00.01 postgres: stats collector process                           
_postgres      28137   0.0  0.0  2479828   1968   ??  Ss    3:01PM   0:00.00 postgres: autovacuum launcher process                           
_postgres      28136   0.0  0.0  2479696    544   ??  Ss    3:01PM   0:00.00 postgres: wal writer process                           
_postgres      28135   0.0  0.0  2479696    732   ??  Ss    3:01PM   0:00.01 postgres: writer process                           
_postgres      28134   0.0  0.0  2479696    592   ??  Ss    3:01PM   0:00.00 postgres: checkpointer process                           
_postgres      28131   0.0  0.0  2439388    368   ??  Ss    3:01PM   0:00.00 postgres: logger process 

Aktualizacja: 13.12.2012, 18:10 GMT-6

Po intensywnych poszukiwaniach w Internecie odnaleziono ten film. Udało mi się uruchomić PostgreSQL i usunąć błąd. Mogę się połączyć za pomocą pgadmin i phppgadmin. Miałem zamiar wrócić do Lion Server z powodu czystej frustracji. Teraz nie będę musiał.

http://www.youtube.com/watch?v=y1c7WFMMkZ4


person Pamela Cook - LightBe Corp    schedule 13.12.2012    source źródło
comment
Twój problem sprowadza się do faktu, że preinstalowana wersja PostgreSQL psql w systemie Mac OS X znajduje się na Twoim PATH przed wersją, którą zainstalowałeś. Szukają gniazda unix w różnych miejscach. Albo użyj protokołu tcp/ip, podając -h localhost, albo najlepiej popraw swój PATH, tak aby najpierw znaleziono prawidłowe psql. Główną przyczyną tego problemu jest dziwaczna decyzja Apple, aby nie tylko spakować PostgreSQL, ale także z nim pomieszać, tak aby umieścił rzeczy w niestandardowych miejscach.   -  person Craig Ringer    schedule 14.12.2012
comment
W systemie OSX występuje ciągły problem, w którym twórcy pakietu postanowili umieścić gniazdo domeny unixowej w innym miejscu niż zwykle. Pozwól mi przeszukać… BRB… stackoverflow.com/a/8482546/905902   -  person wildplasser    schedule 14.12.2012
comment
Skopiowałem starą PATH w .bashrc. Nie zainstalowałem innej wersji postgreSQL. Oto moja instrukcja PATH, która zawiera kod dla RVM. Jeżeli ktoś mógłby mi podpowiedzieć na co mam to zmienić to tak zrobię. Kiedy robię, który psql znajduje się w /usr/bin/psql. Dziękuję bardzo wszystkim za pomoc. ŚCIEŻKA=$PATH:$HOME/.rvm/bin:/usr/bin/psql:/usr/local:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin Jestem wyszukuje również plik gniazda po zalogowaniu się jako root.   -  person Pamela Cook - LightBe Corp    schedule 14.12.2012
comment
Dla tych, którzy używają homebrew i osx @CraigRinger może mieć dla ciebie właściwą odpowiedź, potwierdź za pomocą brew doctor.   -  person Karthik T    schedule 08.01.2014


Odpowiedzi (19)


Udało mi się dodać następujące elementy do mojego .bash_profile, aby zapobiec błędowi:

export PGHOST=localhost

To działa ponieważ:

Jeśli pominiesz nazwę hosta, psql połączy się poprzez gniazdo domeny Unix z serwerem na hoście lokalnym lub przez TCP/IP z hostem lokalnym na komputerach, które nie mają gniazd domeny Unix.

Twój system operacyjny obsługuje gniazda domeny Unix, ale gniazdo Unix PostgreSQL, którego psql potrzebuje, albo nie istnieje, albo znajduje się w innym miejscu, niż się spodziewa.

Określenie nazwy hosta jawnie jako localhost wymusza psql użycie protokołu TCP/IP. Ustawienie zmiennej środowiskowej PGHOST jest jednym ze sposobów osiągnięcia tego celu. Jest to udokumentowane w podręczniku psql.

person mmasters    schedule 25.04.2013
comment
Dla każdego, kto spotka się z tym za pomocą aplikacji Railsowej: możesz określić hosta w pliku Database.yml. - person dwhalen; 18.07.2013
comment
Co to za magia? To znaczy, poważnie. Czy możesz wytłumaczyć? - person Sreejith Ramakrishnan; 02.12.2013
comment
w skorupie ryby set -x PGHOST $PGHOST "localhost" - person Зелёный; 21.04.2014
comment
Zawsze wracam do tej odpowiedzi! Znów uratowałem mi życie. Ten fragment naprawdę powinien znaleźć się na tej stronie, postgresapp.com/documentation/cli-tools.html. - person sambecker; 10.08.2016
comment
Nie wiem dlaczego, ale na mnie to działa! Spotkałem ten problem w Rails 5, kiedy używam „Rails db:create”, ale ustawiłem już host: localhost w pliku Database.yml. @dwhalen - person Spark.Bao; 29.08.2016
comment
U mnie zadziałało, ale nie wiem jak. Czy chciałbyś otrzymać wyjaśnienia? - person Shashank; 19.04.2017
comment
Działało to w przypadku Railsów 5.2 bez modyfikowania database.yml, gdy ten błąd pojawił się po obniżeniu wersji Postgres do starszej wersji zarządzanej przez Homebrew. - person SexxLuthor; 06.01.2019
comment
jest rok 2020 i po aktualizacji Postgres.app natrafiłem na Nie ma takiego pliku ani katalogu: /var/pgsql_socket/.s.PGSQL.5432. Po godzinach znalazłem to, co rozwiązało problem. Żadne ze wszystkich skomplikowanych rozwiązań nie przyniosło niczego poza zepsuciem Terminala. - person Daniela; 21.02.2020

Spróbuj wkleić w konsoli to:

$ mkdir /var/pgsql_socket/ 

$ ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/
person Bryan Algutria    schedule 14.08.2014
comment
Wreszcie dostałem tę odpowiedź. - person Abs; 12.10.2016
comment
Dobry. Chociaż myślę, że wiem, dlaczego to działa, przydałoby się trochę więcej wyjaśnień. To rozwiązanie jest lepsze niż zaakceptowana odpowiedź, brakuje tylko szczegółów. - person Glutexo; 07.03.2018

Udało mi się rozwiązać problem, po prostu wpisując 127.0.0.1 dla adresu hosta PostgreSQL, zamiast pozostawiać puste. (Przykład Django)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'database_name',
        'USER': 'database_user',
        'PASSWORD': 'pass',
        'HOST': '127.0.0.1',
        'PORT': '',
        }
}
person Nick Woodhams    schedule 06.09.2013
comment
Czuję się teraz trochę głupio, próbuję rozwiązać ten problem od około 2 dni. W systemie Windows korzystałem z „127.0.0.1”, ale potem przeniosłem swój kod do wersji produkcyjnej (Debian 7) i musiałem go zmienić na „”. To trochę dziwne, że wyświetlają taki komunikat o błędzie, który prowadzi do przekonania, że ​​problem może leżeć gdzie indziej. - person fang_dejavu; 29.12.2014

Otwórz plik „postgresql.conf” w swoim ulubionym edytorze. Poszukaj zmiennej „unix_socket_directories”, najprawdopodobniej będzie ona wyglądać tak:

unix_socket_directories = '/private/tmp/'

Zmień linię na tę:

unix_socket_directories = '/var/pgsql_socket/'

Uwaga, jeśli chcesz, aby pliki gniazd znajdowały się w więcej niż jednym katalogu, oddziel je przecinkiem.

person Craig Thomas    schedule 09.10.2014
comment
Dało to pożądany efekt w postaci próby utworzenia gniazda w innym miejscu, ale serwer nie uruchomił się, ponieważ nie miał uprawnień do tworzenia plików w katalogu /var. Skończyło się na zmianie plików konfiguracyjnych na wyższym poziomie, aby po prostu użyć gniazda, w którym było pierwotnie. Prawie tak, jak podano w tej odpowiedzi stackoverflow.com/a/29511357/1535177. - person Eosis; 20.04.2018

Znacznie prostsze rozwiązanie (dzięki http://daniel.fone.net.nz/blog/2014/12/01/fixing-connection-errors-after-upgrading-postgres/) . Uaktualniłem do Postgres 9.4. W moim przypadku wszystko, co musiałem zrobić (po całym dniu szukania w Google i bez powodzenia)

gem uninstall pg
gem uninstall activerecord-postgresql-adapter
bundle install

Uruchom ponownie Webrick i gotowe!

person Jan Gerritsen    schedule 13.08.2015

Jak wspomnieli inni w komentarzach, naprawdę prostym rozwiązaniem tego problemu jest zadeklarowanie bazy danych „host” w konfiguracji bazy danych. Dodanie tej odpowiedzi tylko po to, aby uczynić ją trochę bardziej przejrzystą dla każdego, kto to czyta.

Na przykład w aplikacji Ruby on Rails edytuj /config/database.yml:

development:
  adapter: postgresql
  encoding: unicode
  database: database_name
  pool: 5
  host: localhost

Uwaga: ostatnia linia dodana w celu określenia hosta. Przed aktualizacją do Yosemite nigdy nie musiałem określać hosta w ten sposób.

Mam nadzieję, że to komuś pomoże.

Dzięki

person David Battersby    schedule 08.04.2015
comment
Musiałem ustawić mojego hosta na katalog, który, jak znalazłem, zawierał plik .s.PGSQL.5432. - person Eosis; 20.04.2018

Sprawdź status bazy danych:

service postgresql status

Jeśli baza danych nie jest uruchomiona, uruchom db:

sudo service postgresql start
person Sivakumar R.J    schedule 23.02.2017
comment
utknąłem z powyższym błędem i rozwiązałem go, uruchamiając plik db. - person Sivakumar R.J; 23.02.2017

Czy możesz sprawdzić plik postgresql.conf?

Na jakim porcie działa Twój postgres?

Myślę, że nie działa na porcie 5432. Jeśli nie, zmień go na 5432

LUB w przypadku korzystania z terminala

psql -U  postgres -p YOUR_PORT_NUMBER database_name
person Hunter    schedule 13.12.2012
comment
Nie mogę uruchomić polecenia terminala. Dostaję ten sam błąd. Potrzebuję pomocy, gdzie mogę znaleźć plik postgresql.conf. Kiedyś miałem folder /var/pgsql podczas uruchamiania Lion Server. Chyba już tego nie ma. Właśnie opublikowałem wyniki polecenia ps grep. Włączyłem usługę Wiki, aby uruchomić PostgreSQL. Powiedziano mi, że mogę używać poleceń sudo serveradmin bez włączania jakichkolwiek usług aplikacji serwera, ale one nie działają. Jestem teraz zalogowany jako root, więc powinienem móc zrobić wszystko :) Sprawdziłem porty w Network Utility. 5432 nie używany. - person Pamela Cook - LightBe Corp; 14.12.2012

Miałem ten problem z Django.

Napraw to, ustawiając nazwę hosta na „localhost”.

person Ashwin Balamohan    schedule 06.10.2013

robię w słowie, robiąc to:

dpkg-reconfigure locales

i wybierz preferowane lokalizacje

pg_createcluster 9.5 main --start

(9.5 to moja wersja postgresql)

/etc/init.d/postgresql start

i wtedy to słowo!

sudo su - postgres
psql
person mymusise    schedule 13.09.2016

W przypadku aplikacji RubyOnRails dodaj localhost Jeśli używasz niestandardowej wersji Postgresql

# config/database.yml
default: &default
  host: localhost
person itsnikolay    schedule 27.03.2020
comment
Jest to rozwiązanie umożliwiające przejście z gniazda unixowego do gniazda sieciowego. Lepszym rozwiązaniem byłaby rekompilacja gem postrges pg, aby dopasować zmiany w postrgesql spowodowane aktualizacją lub jakąkolwiek zmianą: gep pristine pg - person Fa11enAngel; 19.10.2020

Jeśli masz powyższy problem, ale dokonałeś aktualizacji z Yosemite, potrzebne jest inne podejście, ponieważ rozwiązanie aktualizacji może zniszczyć niektóre pliki. Więcej szczegółów można znaleźć pod adresem Brak `pg_tblspc` po instalacji najnowszej wersji OS X (Yosemite lub El Capitan).

person Obromios    schedule 11.11.2014

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"?

Ciągle pojawiał się powyższy błąd i żadne z powyższych rozwiązań nie zadziałało. 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 zatrzymać postgres ręcznie

brew services stop postgresql

Możemy również skorzystać z usług parzenia, aby ponownie uruchomić Postgres

brew services restart postgresql
person Sudharshan    schedule 23.01.2017

sprawdź, czy serwer Postgres działa z następującym kodem

sudo service postgresql status

jeśli serwer Postgres jest nieaktywny, napisz następujące polecenie.

sudo service postgresql start
person wailinux    schedule 07.09.2018

Ten błąd pojawił się po tym, jak mój komputer się zawiesił i sam uruchomił ponownie. Rozwiązanie dla mnie nie zostało znalezione na tej stronie, a raczej w innym bardzo wysoko ocenionym pytaniu SO z tym samym błędem psql: nie można połączyć się z serwerem: nie ma takiego pliku ani katalogu (Mac OS X). Odpowiedź: po prostu usuń ten plik /usr/local/var/postgres/postmaster.pid, a następnie brew services restart postgresql załatwi sprawę. Zanim to zrobisz, zapoznaj się z ostrzeżeniem w połączonej odpowiedzi na temat zabijania procesów Postgres, w przeciwnym razie możesz trwale uszkodzić bazę danych.

person wetjosh    schedule 15.05.2019

Uprawnienia do plików są restrykcyjne w bazie danych Postgres należącej do systemu Mac OS. Te uprawnienia są resetowane po ponownym uruchomieniu lub ponownym uruchomieniu Postgres: np. administrator serwera uruchom postgres.

Tymczasowo zresetuj uprawnienia lub własność:

sudo chmod o+rwx /var/pgsql_socket/.s.PGSQL.5432
sudo chown "webUser"  /var/pgsql_socket/.s.PGSQL.5432

Resetowanie uprawnień nie jest bezpieczne, więc aby uzyskać rozwiązanie, zainstaluj posiadaną wersję bazy danych.

person clewis    schedule 14.10.2014

Zajęło mi to trochę czasu, ale udało mi się w końcu to uruchomić po przejrzeniu oferowanych sugestii i przeprowadzeniu dodatkowych wyszukiwań w Internecie. Informacje te wykorzystałem w poniższym filmie YouTube stworzonym przez Mactasię:

http://www.youtube.com/watch?v=y1c7WFMMkZ4

Kiedy to zrobiłem, zobaczyłem plik z rozszerzeniem .lock. Jednak nadal pojawiał się błąd, gdy próbowałem uruchomić serwer Rails, gdy wznowiłem pracę nad moją aplikacją Railsową przy użyciu PostgreSQL. Tym razem dostałem błąd odmowy pozwolenia. Wtedy przypomniałem sobie, że nie tylko musiałem zmienić adresy słuchaczy w pliście, ale także zmienić uprawnienia unit_socket_permissions na 0777. Zalogowałem się również jako root, aby zmienić uprawnienia do folderu var/pgsql_socket, do którego mogłem uzyskać dostęp pod adresem poziom użytkownika. Postgres działa teraz dobrze. Jestem w trakcie ponownego ładowania danych z kopii zapasowej SQL.

Nie rozumiałem, że kiedy miałem włączoną wiki, PostgreSQL rzekomo działał, kiedy zrobiłem sudo serveradmin fullstatus postgres, ale nadal pojawiał się błąd. No cóż.

person Pamela Cook - LightBe Corp    schedule 14.12.2012

Właśnie utworzyłem nowy klaster i to zadziałało dla mnie, korzystałem z (PostgreSQL) 9.3.20:

sudo pg_createcluster 9.3 main --start
person Bruno Filgueiras    schedule 04.12.2017

Najpierw usuń zainstalowany postgres:

sudo apt-get purge postgr*
sudo apt-get autoremove

Następnie zainstaluj „synaptic”:

sudo apt-get install synaptic
sudo apt-get update

Następnie zainstaluj Postgres

sudo apt-get install postgresql postgresql-contrib
person Gurudath BN    schedule 03.06.2016