Postgres nie mógł połączyć się z serwerem


415

Po tym, jak zrobiłem aktualizację naparu i uaktualnienie naparu, moje postgres miały problem. Próbowałem odinstalować postgres i zainstalować ponownie, ale nie działało to tak dobrze.

To jest komunikat o błędzie (otrzymałem również ten komunikat o błędzie, gdy próbuję wykonać rake db: migracja)

$ psql
psql: 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"?

Jak mogę to rozwiązać?

Wersja Mac: lew górski.

wersja homebrew: 0.9.3

wersja postgres: psql (PostgreSQL) 9.2.1

I to właśnie zrobiłem.

12:30 ~/D/works$ brew uninstall postgresql
Uninstalling /usr/local/Cellar/postgresql/9.2.1...
12:31 ~/D/works$ brew uninstall postgresql
Uninstalling /usr/local/Cellar/postgresql/9.1.4...
12:31 ~/D/works$ psql --version
bash: /usr/local/bin/psql: No such file or directory
12:33 ~/D/works$ brew install postgresql
==> Downloading http://ftp.postgresql.org/pub/source/v9.2.1/postgresql-9.2.1.tar.bz2
Already downloaded: /Library/Caches/Homebrew/postgresql-9.2.1.tar.bz2
......
......
==> Summary
/usr/local/Cellar/postgresql/9.2.1: 2814 files, 38M, built in 2.7 minutes
12:37 ~/D/works$ initdb /usr/local/var/postgres -E utf8
The files belonging to this database system will be owned by user "laigary".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.UTF-8".
The default text search configuration will be set to "english".

initdb: directory "/usr/local/var/postgres" exists but is not empty
If you want to create a new database system, either remove or empty
the directory "/usr/local/var/postgres" or run initdb
with an argument other than "/usr/local/var/postgres".
12:39 ~/D/works$ mkdir -p ~/Library/LaunchAgents
12:39 ~/D/works$   cp /usr/local/Cellar/postgresql/9.2.1/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents/
12:39 ~/D/works$   launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
homebrew.mxcl.postgresql: Already loaded
12:39 ~/D/works$ pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
server starting
12:39 ~/D/works$ env ARCHFLAGS="-arch x86_64" gem install pg
Building native extensions.  This could take a while...
Successfully installed pg-0.14.1
1 gem installed
12:42 ~/D/works$ psql --version
psql (PostgreSQL) 9.2.1
12:42 ~/D/works$ psql
psql: 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"?

Teraz, po ponownej instalacji Howbrew, kiedy używam $ psql , nie wyświetla żadnego komunikatu o błędzie.

Ale działam rake db:migratew mojej aplikacji Rails, pokazuje:

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"?
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213:in `initialize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213:in `new'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213:in `connect'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:329:in `initialize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `new'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `postgresql_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:309:in `new_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:319:in `checkout_new_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:241:in `block (2 levels) in checkout'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:236:in `loop'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:236:in `block in checkout'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:233:in `checkout'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:96:in `block in connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:95:in `connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:404:in `retrieve_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:170:in `retrieve_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:144:in `connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:107:in `rescue in create_database'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:51:in `create_database'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:40:in `block (3 levels) in <top (required)>'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:40:in `each'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:40:in `block (2 levels) in <top (required)>'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:205:in `call'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:205:in `block in execute'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:200:in `each'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:200:in `execute'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:158:in `block in invoke_with_call_chain'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:151:in `invoke_with_call_chain'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:144:in `invoke'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:116:in `invoke_task'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:94:in `block (2 levels) in top_level'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:94:in `each'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:94:in `block in top_level'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:88:in `top_level'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:66:in `block in run'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:63:in `run'
/usr/local/bin/rake:32:in `<main>'
Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "database"=>"riy_development", "pool"=>5, "username"=>nil, "password"=>nil}

Wreszcie znajdę rozwiązanie.

$ sudo mkdir /var/pgsql_socket/
$ sudo ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/

To rozwiązanie jest trochę trudne, ale działa. Mam nadzieję, że ktoś ma lepsze rozwiązanie

Aktualizacja

To też działa dla mnie.

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

3
Mam dokładnie ten sam problem, ale twoje rozwiązanie nie zadziałało dla mnie. Myślę, że jest to problem z uprawnieniami, ale nie mam wiedzy na temat uprawnień do plików, aby go naprawić.
ajbraus

Dla tych, którzy instalują PG przez Homebrew i mają problemy, znalazłem inną odpowiedź. Wystarczy odinstalować pg gem i zainstalować ponownie z konfiguracjami Homebrew. Zobacz odpowiedź na stackoverflow.com/a/19609228/1072058 .
zquintana

podobna odpowiedź tutaj - stackoverflow.com/questions/13573204/…
VelLes

1
Rozpocznij postgres.
atw

4
Uaktualnij istniejącą do nowszej wersji za pomocą następującego polecenia brew postgresql-upgrade-database

Odpowiedzi:


799

Miał podobny problem; plik pid blokował uruchomienie postgres. Naprawić to:

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

i wtedy wszystko jest dobrze.


4
To działało dla mnie w OSX Mavericks po zobaczeniu tego problemu po aktualizacji / ponownym uruchomieniu.
eprothro,

3
@jstafford dzięki, już rozwiązałem! :) Rozwiązaniem było odinstalowanie przez homebew, a następnie ponowne uruchomienie komputera od razu, aby móc ponownie zainstalować postgres. Stara wersja działała w tle, tworząc pliki i konflikty za każdym razem, gdy próbowałem ponownie zainstalować postgres.
betoharres

199
To nie działało dla mnie w Mavericks:rm: /usr/local/var/postgres/postmaster.pid: No such file or directory
sscirrus

16
To działało dla mnie, po skasowaniu musiałem zacząć postgres. # pg_ctl -D / usr / local / var / postgres -l /usr/local/var/postgres/server.log start
Ricardo Castañeda

12
Polecam dostosowanie dziennika serwera, aby upewnić się, że to w rzeczywistości problem:tail /usr/local/var/postgres/server.log
Josh Bodah

255

Czasami może to być problem z aktualizacją postgres.

W moim przypadku stało się to podczas aktualizacji z 9.3 do 9.4.

Zobacz http://www.postgresql.org/docs/9.4/static/upgrading.html

OS X / Homebrew:

Spróbuj uruchomić postgres -D /usr/local/var/postgres- da ci dużo więcej danych wyjściowych, jeśli postgres się nie uruchomi.

W moim przypadku uruchomiłem rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8usunięte moje stare bazy danych, a następnie ponownie zainicjowałem schemat bazy danych postgres.

Dzięki https://github.com/Homebrew/homebrew/issues/35240 za to rozwiązanie.

Po zregenerowaniu moich baz danych rake db:createwszystko zaczęło działać poprawnie.


1
Działa to dla mnie z zainstalowanym postgres homebrew na Yosemite.
cpursley

7
Jeśli polecenie postgres -D /usr/local/var/postgresinformuje, że katalog danych został zainicjowany ze starszą, niekompatybilną wersją Postgres i nie chcesz stracić lokalnych danych, możesz spróbować tego wątku
Nathan Long

Po uruchomieniu powyższej komendy uruchomiłem: pg_ctl -D /usr/local/var/postgres -l logfile starta potem mój serwer uruchomił się w tle
Tommyixi

5
Użyj brew services start postgresna OSX, aby uruchomić postgres w tle zamiastpostgres -D /usr/local/var/postgres
Mike Andrianov

1
@coffekid Miałem ten sam problem i naprawiłem go za pomocą instrukcji tutaj: stackoverflow.com/questions/24379373/...
Micah Walter

68

Tutaj znalazłem rozwiązanie, które dla mnie zadziałało:

/dba/75214/psql-could-not-connect-to-server-no-such-file-or-directory

Zasadniczo uruchamiasz następujące polecenie, aby ręcznie uruchomić serwer:

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

8
Ze wszystkich odpowiedzi jest to jedyna, która zadziałała dla mnie. Korzystanie z El Capitan
Patrick_870206,

Próbowałem z tym cmd, ale nie działa dla mnie !!
Harshit Trivedi

41

Jeśli instalowanie i odinstalowywanie postgres za pomocą brew nie działa, spójrz na dzienniki instalacji postgresql lub:

postgres -D /usr/local/var/postgres

jeśli widzisz tego rodzaju dane wyjściowe:

LOG:  skipping missing configuration file "/usr/local/var/postgres/postgresql.auto.conf"
FATAL:  database files are incompatible with server
DETAIL:  The data directory was initialized by PostgreSQL version 9.4, which is not compatible with this version 9.6.1.

Następnie spróbuj wykonać następujące czynności:

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

Następnie uruchom serwer:

pg_ctl -D /usr/local/var/postgres -l logfile start

Źródło


2
Działa to, gdy przyczyna jest inna niż zaakceptowana odpowiedź, tj. Pliki bazy danych nie są zgodne z bieżącą wersją. Ponieważ dokładnie taki był mój problem, głosuję za.
Falk Schuetzenmeister

1
to polecenie działa dla mnie.
Ccr

pracuje dla Mojave 10.14.6
Sgryt87

34

W Yosemite, jeśli plik pid blokuje uruchomienie Postgres i masz launchctldemona próbującego (i nie powiodło się) załadować demony bazy danych, musisz zwolnić plik plist:

$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

Następnie usuń plik pid

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

Następnie ponownie załaduj launchctldemona

$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

28

Dla każdego, kto to czyta i korzysta z Postgres.app, może być potrzebny host: localhostw pliku database.yml. http://postgresapp.com/documentation#toc_3


Spowoduje to zmianę połączenia z gniazda na połączenie TCP, co może mieć negatywne konsekwencje. Zobacz stackoverflow.com/questions/6770649/…
Brett Bim

1
Hmm, właściwie, jeśli przegłosujesz ... Może nie powiesz dlaczego? meta.stackoverflow.com/questions/252297/... A może powiedz dlaczego, ale najpierw się wyloguj, aby zachować anonimowość.
David Winiecki

Myślę, że głosowanie w dół wynika z tego, że pierwotne pytanie nie dotyczyło Postgres.app, ale Homebrew. Tak więc, chociaż odpowiedź gdzieś może być przydatna, nie odpowiada na pytanie.
Brian Drogi

Link nie wydaje się nigdzie konkretny (a wyszukiwanie „localhost” w przeszłości nie przyniosło żadnych wyników), ale to po prostu rozwiązało problem po godzinie wyszukiwania.
sixty4bit

25

Aktualizacja bazy danych działa dla mnie

brew postgresql-upgrade-database


👍✅⭐️🙏 Dziękuję Tomer! To zadziałało dla mnie 6/2/20 aktualizacja z 9.4 do 12 na macOS Mojave 10.14.6
Rob Bednark

19
brew services start postgres 

pracował dla mnie!


17

Sprawdź, czy plik gniazda istnieje.

$ ls -l /tmp/.s.PGSQL.5432
srwxrwxrwx  1 you  wheel  0 Nov 16 09:22 /tmp/.s.PGSQL.5432

Jeśli tak się nie stanie, sprawdź, czy w pliku postgresql.conf nie ma zmiany unix_socket_directory.

$ grep unix_socket /usr/local/var/postgres/postgresql.conf
#unix_socket_directory = ''     # (change requires restart)
#unix_socket_group = ''         # (change requires restart)
#unix_socket_permissions = 0777     # begin with 0 to use octal notation

1
To jest odpowiedź mojego komputera. $ ls -l /tmp/.s.PGSQL.5432 ls: /tmp/.s.PGSQL.5432: No such file or directory $ grep unix_socket /usr/local/var/postgres/postgresql.conf #unix_socket_directory = '' # (change requires restart) #unix_socket_group = '' # (change requires restart) #unix_socket_permissions = 0777 # begin with 0 to use octal notation
Gary Lai,

29
Wreszcie znajdę rozwiązanie. $ mkdir /var/pgsql_socket/ $ sudo mkdir /var/pgsql_socket/ $ ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/To rozwiązanie jest trochę trudne, ale działa. Mam nadzieję, że ktoś ma lepsze rozwiązanie
Gary Lai,

dobra robota @GaryLai. Bardzo dziwne, że nie musiałem robić tego samego z moim homebrew postgresql
jrwren,

2
może to pomóc niektórym ludziom: github.com/mxcl/homebrew/issues/14527
AdamT

14

Problem może być również spowodowany zawieszeniem procesu, który pozostawił plik postmaster.pid. Robię to i prace:

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

10

Problem polega na tym, że na porcie 5432 jest już uruchomiona usługa i nie możemy ustanowić połączenia gniazda psql przez ten port.

Usunąłem plik gniazda

rm -rf /tmp/.s.PGSQL.5432/

Następnie ponownie zainicjowałem usługi postgres

postgres -D /usr/local/var/postgres

To zadziałało dla mnie.


8

Najbardziej głupim dowodem na to jest zrobienie tego

brew reinstall postgresql

Dzięki temu Twoje uprawnienia użytkownika itp. Pozostaną nienaruszone, a wszystko zostanie zresetowane do nowego. Działa cały czas!


pracował jak mistrz !!!! To wszystko było potrzebne.
Akash K

7

Zmiana ustawień konfiguracji postresql lub database.yml, zmiana $ PATH lub tworzenie dowiązań symbolicznych były dla mnie niepotrzebne. Wszystko, co musiałem zrobić, to gem uninstall pgi wtedy bundle(lub gem install pg).

Problem polegał na tym, że klejnot pg został zainstalowany przed postgres homebrew, podobnie jak pobieranie ustawień z wersji postgres dostarczanej z MacOS. Ponowne zainstalowanie go (a tym samym przebudowanie rozszerzenia natywnego) rozwiązało problem.


Chciałem tylko podziekować. Właśnie zaktualizowałem PostgresApp na macOS i chociaż mogłem połączyć się za pomocą psql, nie mogłem połączyć się przez szyny. odinstalowanie i ponowne zainstalowanie pg gem było tylko biletem! :)
craig1410

7

Zdarzyło mi się to podczas aktualizacji z 9.3.4 do 9.5, ponieważ bazy danych są niekompatybilne bez aktualizacji.

Użyłem pg_upgrade w następujący sposób:

Zatrzymaj postgres

$ brew services stop postgresql

Zaktualizuj bazy danych:

$ pg_upgrade \
   -d /usr/local/var/postgres \
   -D /usr/local/var/postgres9.5 \
   -b /usr/local/Cellar/postgresql/9.3.4/bin/ \
   -B /usr/local/Cellar/postgresql/9.5.0/bin/ \
   -v

Archiwizuj stare bazy danych:

 $ mv /usr/local/var/postgres /usr/local/var/postgres9.3.save
 $ mv /usr/local/var/postgres9.5 /usr/local/var/postgres

Uruchom ponownie postgres:

 $ brew services start postgresql

Zaktualizowano klejnoty (dla torów / aktywnego zapisu):

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

Instrukcje te znajdują się również na stronie kolektywidea.com/blog/archives/2016/01/08 /... i nadal działały dla mnie dzisiaj podczas aktualizacji z wersji 9.4.0 do 9.6.3. Nie musiałem ręcznie robić nic z plikiem .pid.
Jan Hettich

7

To właśnie powinieneś zrobić:

zamiast tego powinieneś spojrzeć na /usr/local/var/postgres/postmaster.pid

a następnie spójrz na pierwszą linię pliku - jest to zły PID

Biegać

ps aux | grep <PID>

na przykład:

ps aux | grep 12345

to zrób

kill <PID>

na przykład

kill 12345

Zakładając, że nadal działa

/superuser/553045/fatal-lock-file-postmaster-pid-already-exists

nie słuchaj przyjętej odpowiedzi, ponieważ jest zła i spowoduje uszkodzenie Twoich danych !!!


Dzięki, to zadziałało dla mnie. Usunięcie postmaster.pid z zaakceptowanej odpowiedzi nie było w rzeczywistości wystarczające.
Abe Petrillo

4

Opcja Psql

-h nazwa hosta --host = nazwa hosta

: Określa nazwę hosta komputera, na którym działa serwer. Jeśli wartość zaczyna się od ukośnika, jest używana jako katalog dla gniazda domeny uniksowej.

$ grep "port\|unix_socket" /etc/postgresql/9.1/main/postgresql.conf
port = 5433                                         # (change requires restart)
unix_socket_directory = '/var/run/postgresql'       # (change requires resta

$ netstat -nalp | grep postgres
unix  2      [ ACC ]     STREAM     LISTENING     106753   4349/postgres       /tmp/.s.PGSQL.5432
unix  2      [ ACC ]     STREAM     LISTENING     10377 1031/postgres       /var/run/postgresql/.s.PGSQL.5433

Uruchom psql z opcją -host

$ psql -p 5433 -h /var/run/postgresql

Nie trzeba tworzyć miękkiego linku


4

Ten problem pojawił się również w systemie MacOS Sierra, a kiedy uruchomiliśmy pg_ctl zgodnie z powyższym opisem, wystąpił następujący błąd pg_ctl: no database directory specified and environment variable PGDATA unset. Wykonaliśmy więc kroki , które rozwiązały nasz problem, a mianowicie:

mkdir ~/.postgres

initdb ~/.postgres

pg_ctl -D ~/.postgres start


4

Jeśli postgres został zainstalowany przy użyciu homebrew, możesz to naprawić, uruchamiając:

brew link postgres


4

Jeśli zamkniesz system bez wychodzenia z psql, postgres nie usunąłby niektórych plików.

Nie znalazłem pliku postmaster.pid w lokalizacji usr / local / var / postgres

Zrobiłem więc poniżej:

usługi parzenia zaczynają postgresql

Powyższe polecenie powinno umożliwić uruchomienie postgres


3

Wystąpił ten problem po próbie przywrócenia / upuszczenia / utworzenia bazy danych, gdy inne procesy uzyskiwały do ​​nich dostęp. Naprawiono MacOSX / Homebrew:

  1. zamknij wszystkie inne procesy korzystające rails server, rails console, guard, itd ...
  2. ładuj / zwalniaj za pomocą poleceń znalezionych w brew info postgres
  3. uruchom przywracanie / upuszczanie / tworzenie wcześniej

3

FWIW zdarzyło mi się to dzisiaj, ale to, co się stało, polegało na tym, że w tym czasie korzystałem z aktualizacji Ubuntu, które prawdopodobnie aktualizowały Postgres. Po zakończeniu aktualizacji udało mi się połączyć bez żadnych problemów.

Dla kompletności próbowałem pobrać rekordy z bazy danych z konsoli Rails:

development (main):0 > a = MyModel.find 73694
PG::ConnectionBad: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

3

Wygląda na to, że twój psql nie działa. Powinieneś go uruchomić przed połączeniem. Możesz to zrobić tylko za pomocą Postgres.app dla Mac OS. (Pobierz i zainstaluj tę aplikację http://postgresapp.com ) Otwórz aplikację, a masz gotowy serwer PostgreSQL i czeka na nowe połączenia. Zamknij aplikację, a serwer się wyłączy. Te informacje można również znaleźć tutaj http://www.postgresql.org/download/macosx/ . Mam nadzieję, że to ci pomoże.


1
Chociaż ten link może odpowiedzieć na pytanie, lepiej dołączyć tutaj istotne części odpowiedzi i podać link w celach informacyjnych. Odpowiedzi zawierające tylko łącze mogą stać się nieprawidłowe, jeśli połączona strona ulegnie zmianie.
Kmeixner,

Pytanie dotyczyło konkretnie instalacji Homebrew, a nie instalacji Postgres.app. Ta odpowiedź jest pomocna, ale nie odpowiada na pytanie. To tak, jakby powiedzieć „Zamiast tego używaj MySQL”.
Brian Drogi

3

Jest tak, ponieważ poprzedni serwer nadal działa, spróbuj zamknąć wszystko i ponownie uruchomić aplikację.


3

Dla tych, którzy używają tego polecenia i nie działają lub nie ma tam pliku i używają Ruby on Rails

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

Lub dowolne inne polecenie i po prostu nie powiodło się.

Rozwiązałem ten problem podczas odinstalowywania za pomocą Brew. Musiałem odinstalować za pomocą brew 2 razy, ponieważ przy pierwszym odinstalowaniu pozostanie inna wersja postgresql, przy drugim odinstalowaniu proces zostanie zakończony.

Zainstaluj postgresql z Brew

Następnie upuść, utwórz i migruj bazy danych projektu

(Nie zapomnij uruchomić serwera Postgresql)


3

Mam ten sam problem, ponieważ używam złej nazwy użytkownika Postgres w kodzie. Zalogowałem się do postgres psql -d postgresi wchodzę\du Postgres aby przyjąć nazwę roli i poprawić nazwę użytkownika Postgres.

Więc kiedy napotkasz ten problem, musisz upewnić się, że używasz prawidłowej nazwy użytkownika Postgres, hasła, nazwy hosta i bazy danych ...

Mam nadzieję, że to pomoże każdemu


3

¿Czy ostatnio zmieniłeś plik pg_hba.conf? jeśli po prostu sprawdziłeś literówkę:

„lokalny” dotyczy tylko połączeń gniazd domeny Unix

lokalne wszystkie wszystkie hasła

Połączenia lokalne IPv4:

hostuj wszystkie hasła 127.0.0.1/32

Połączenia lokalne IPv6:

hostuj wszystko :: 1/128 hasło

Czasami prosty błąd może sprawić nam ból głowy. Mam nadzieję, że ta pomoc i przepraszam, jeśli mój angielski w ogóle nie jest dobry.


3

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 sukcesie w kroku 2 pojawi się monit o uruchomienie kroku 3. To polecenie ręcznie uruchamia serwer.]


2

Mam ten sam błąd. Okazuje się, że postgres w ogóle nie działał (zwykle zawsze działa w tle, ale z jakiegokolwiek powodu nie był dzisiaj).

W takim przypadku wystarczy wpisać postgresw wierszu polecenia katalogu projektu


2

Po ogromnej ilości tam i z powrotem naprawdę sprowadzało się to do pgwersji klejnotu, której używałem. W przypadku komputerów indywidualnych pgwersja 0.15.1nie łączy się z portem 5432, ale wersja 0.17.1działa dobrze - bardzo dziwnie.

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.