Podobnie jak w przypadku innych, otrzymuję ten błąd, gdy uruchamiam rake db: migrate w moim projekcie lub nawet próbuję większości zadań bazy danych dla moich aplikacji Ruby on Rails 3.2.
PGError (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 Unix "/tmp/.s.PGSQL.5432"?
Zainstalowałem PostgreSQL z Homebrew dawno temu i po niedawnej próbie instalacji MongoDB 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ć skonfigurowany na moim Macu?
Jak dotąd (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 mówi mi, że PostgreSQL działa?
✪ 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 ja nie widzę
PS: ~/Library/LaunchAgents
zawiera dwa pliki .plist PostgreSQL. Nie jestem pewien, czy to ma znaczenie.
org.postgresql.postgres.plist
homebrew.mxcl.postgresql.plist
Wypró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, że dzieje się tak, 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 zasadniczo łączysz symboliczny PostgreSQL, aby wszystko, co szukało w tej ścieżce tmp, faktycznie znajdowało prawdziwą ścieżkę, jeśli ma to sens.
To jest łącze, w którym znalazłem kilka innych rzeczy do wypróbowania, w szczególności wykonując łącze symboliczne zgodnie z powyższym, Mac OSX Lion Postgres nie akceptuje połączeń w /tmp/. PGSQL.5432 . Nadal chciałbym, żeby ktoś zebrał przyzwoite wyjaśnienie koncepcji instalacji PostgreSQL na OS X i dlaczego to wszystko jest takie trudne.
Najnowsze informacje pomocne przy rozwiązywaniu problemów:
$ 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 to:
Upewnij się, że wpis ścieżki dla kopii PostgreSQL, którą chcesz uruchomić, ZOSTANIE PRZED ścieżką do PostgreSQL systemu OS X.
Jest to podstawowy wymóg, który decyduje, który PostgreSQL zostanie uruchomiony i to, co mi powiedziano, prowadzi do większości tych problemów.
źródło
Odpowiedzi:
Sprawdź, prawdopodobnie, że w Twoim katalogu postgres nie ma postmaster.pid
/usr/local/var/postgres/
usuń to i uruchom serwer.
Sprawdź - https://github.com/mperham/lunchy to świetne opakowanie dla launchctl.
źródło
„ Postgres.app ” jest lepszym rozwiązaniem, jeśli używasz systemu OS X
Oto poprawka:
cd /var
rm -r pgsql_socket
ln -s /tmp pgsql_socket
chown _postgres:_postgres pgsql_socket
Więcej informacji można znaleźć w „ postgresql 9.0.3. On Lion Dev Preview 1 ”.
źródło
/tmp
do _postgres, ale hej :)U mnie to działa
źródło
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
brew services restart postgresql
No such file or directory
W moim przypadku jestem w docker envTo zadziałało dla mnie z powodu błędu, o którym wspomniałeś. Wykonaj jedną z tych czynności:
Ewentualnie zmień domyślny port określony w
postgres.conf
pliku, jeśli5432
podczas instalacji użyłeś czegoś innego niż domyślny .Zmień numer portu
postgresql.conf
i zrestartuj serwer DB.Zamiast
psql
wpisywać pełne polecenie:źródło
Jeśli używasz Homebrew, odinstaluj Postgresql end pg gems: *
Pobierz i uruchom następujący skrypt, aby naprawić uprawnienia w / usr / local: * https://gist.github.com/rpavlik/768518
Następnie zainstaluj ponownie Postgres i pg gem: *
Aby launchd uruchomił postgresql podczas logowania:
Lub zacznij ręcznie.
Zainstaluj pg gem
Mam nadzieję, że pomogłem
źródło
brew info postgres
:ARCHFLAGS="-arch x86_64" gem install pg
initdb /usr/local/var/postgres -E utf8
Pracuje. Wielkie dzięki.Miałem ten problem, kiedy zaktualizowałem Postgres do wersji 9.3.x. Szybką naprawą dla mnie było przejście na starszą wersję 9.2.x, którą miałem wcześniej (nie ma potrzeby instalowania nowej).
„ Homebrew zainstalować określoną wersję formuły? ” Oferuje znacznie bardziej wyczerpujące wyjaśnienie wraz z alternatywnymi sposobami rozwiązania problemu.
źródło
Naprawiłem to, aktualizując postgres.
Następnie musiałem również zaktualizować bazy danych, aby były kompatybilne z nową wersją główną, ponieważ zaktualizowałem z 10 do 11.
(źródło https://github.com/facebook/react-native/issues/18760#issuecomment-410533581 )
źródło
Więc w przypadku wielu problemów wydaje się, że ludzie już używali psql i musieli usunąć
postmaster.pid
. Jednak nie miałem tego problemu, ponieważ nigdy nie miałem poprawnie zainstalowanych postgresów w moim systemie.Oto rozwiązanie, które działało dla mnie w systemie MAC OSX Yosemite
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin
Mam nadzieję że to pomoże! Toodles!
Również ta odpowiedź pomogła mi najbardziej: https://stackoverflow.com/a/21503349/3173748
źródło
Kiedy uruchamiasz: psql -p 5432 -h localhost, nie używa sterownika pętli zwrotnej, ale używa prawdziwego gniazda i dlatego musisz skonfigurować postgres, aby akceptował połączenia gniazd. Dlatego nawet jeśli pgadmin i inni klienci mogą działać, psql nie.
Musisz zmienić zarówno plik postgresql.conf, jak i pg_hba.conf, aby umożliwić połączenie przez prawdziwe gniazdo. Pozwoli to również na połączenie ze zdalnego adresu IP, dlatego jest domyślnie wyłączone.
Te pliki znajdują się w katalogu danych, ale rzeczywista lokalizacja może się różnić w zależności od tego, jak został zainstalowany postgres. Po uruchomieniu postgres uruchom komendę:
Te dwa pliki to katalog -D (może / usr / local / pgsql / data).
W przypadku pliku postgresql.conf odkomentuj parametr Listen_address i zmień go na:
Dla pg_hba.conf dodaj linię:
źródło
Nie znam Maca ani Homebrew, ale znam PostgreSQL bardzo dobrze.
Chcesz dowiedzieć się, skąd pochodzą logi PostgreSQL, próbując się uruchomić i jaki jest katalog gniazd dla PostgreSQL. Domyślnie podczas budowania PG katalog gniazda to / tmp /. Jeśli nie zmieniłeś tego podczas budowania PG, a następnie uruchomiłeś PG, powinieneś być w stanie zobaczyć plik gniazda w / tmp, jeśli zrobisz: ls -al / tmp
Plik gniazda zaczyna się od „.”, Więc nie zobaczysz go z „-a” oznaczającym ls.
Jeśli nie widzisz tam gniazda i nie widzisz niczego z ps awux | grep postgres, to PG prawdopodobnie nie działa, a może tak i jest zainstalowany na OSX. Może się zdarzyć, że możesz mieć konflikt podczas nasłuchiwania na porcie 5432 na hoście lokalnym - użyj polecenia netstat -anp, aby zobaczyć, co nasłuchuje na 5432. Jeśli Mac OSX PG już nasłuchuje na tym porcie, może być problemem.
Mam nadzieję, że to pomoże. Słyszałem, że homebrew może sprawić, że sytuacja będzie trochę brzydka i wiele osób, z którymi rozmawiałem, zachęcało do korzystania z maszyny wirtualnej.
źródło
Napotkałem ten błąd podczas uruchamiania na Macu 10.15.5 przy użyciu homebrew.
Istnieje plik o nazwie postmaster.pid, który powinien zostać automatycznie usunięty po zamknięciu postresql.
Jeśli nie, wykonaj następujące czynności
źródło
Przyczyna
Lion jest dostarczany z już zainstalowaną wersją postgres i domyślnie używa tych plików binarnych. Ogólnie rzecz biorąc, możesz obejść ten problem, używając pełnej ścieżki do plików binarnych homebrew postgres, ale mogą nadal występować problemy z innymi programami.
Rozwiązanie
Przez
http://nextmarvel.net/blog/2011/09/brew-install-postgresql-on-os-x-lion/
źródło
Jednym z powodów, dla których pojawia się ten błąd, jest to, że lokalna baza danych postgres wyłącza się po ponownym uruchomieniu komputera. W nowym oknie terminala po prostu wpisz:
zrestartować serwer.
źródło
Witaj świecie :)
Najlepszym, ale dziwnym dla mnie sposobem było robienie kolejnych rzeczy.
1) Pobierz postgres93.app lub inną wersję. Dodaj tę aplikację do folderu / Applications /.
2) Dodaj wiersz (polecenie) do pliku
To jest ŚCIEŻKA do.bash_profile
(który znajduje się w moim katalogu domowym):psql
zPostgres93.app
. Wiersz (polecenie) jest uruchamiany za każdym razem, gdy uruchamiana jest konsola.3) Uruchom
Postgres93.app
z/Applications/
folderu. Uruchamia lokalny serwer (port to „5432”, a host to „localhost”).4) Po tych wszystkich manipulacjach ucieszyłem się, mogąc uruchomić
$ createuser -SRDP user_name
i innych poleceń i zobaczyć, że zadziałało!Postgres93.app
można uruchomić 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ć swoją bazę danych postgres jako ładne tabele danychOczywiście jest to pomocne tylko dla lokalnego serwera. Będzie mi miło, jeśli ta instrukcja pomoże innym, którzy stanęli przed tym problemem.
źródło
Miałem PostgreSQL 9.3 i otrzymałem ten sam błąd,
Naprawiłem to za pomocą:
Mi to pasuje.
źródło
co jest warte, napotkałem ten sam błąd, gdy miałem literówkę (
md4
zamiastmd5
) w moimpg_hba.conf
pliku (/etc/postgresql/9.5/main/pg_hba.conf
)Jeśli dotarłeś tutaj tak jak ja, sprawdź raz dwukrotnie ten plik, aby upewnić się, że nie ma w nim nic śmiesznego.
źródło
pg_hba.conf
plik?Lokalne uruchamianie PostgreSQL może mieć różne problemy. Poleciłbym wyczyścić wszystkie zainstalowane wersje postgres i zacząć od nowa. Po zainstalowaniu bardzo łatwo jest odtworzyć bazę danych, jeśli masz aktualny projekt railsów
db/schema.rb
Oto jak zwykle instaluję PostgreSQL na komputerze Mac . Jeśli korzystasz z bazy danych lokalnie jako użytkownik root, możesz pominąć ostatni krok, który tworzy
todo
użytkownikaźródło
Jednym z powodów może być to
unix_socket_directories w pliku postgresql.conf nie jest wymieniony z katalogiem, którego szuka.
W przykładzie z pytaniem szuka katalogu / tmp musi to być podane w pliku postgresql.conf
coś takiego:
To rozwiązanie zadziałało dla mnie.
źródło
Jeśli używasz MacOS i używasz homebrew, ta odpowiedź jest niezwykle pomocna:
https://stackoverflow.com/a/27708774/4062901
U mnie serwer działał, ale z powodu aktualizacji miałem problemy z połączeniem (uwaga: korzystam z usług parzenia). Jeśli Postgres jest uruchomiony, spróbuj
cat /usr/local/var/postgres/server.log
sprawdzić, co mówią dzienniki. Mój błąd polegał na migracji, a nie na połączeniu.Również po zaproponowanej przez nich ręcznej migracji (która działa, ale) stwierdziłem, że nie ma już tabeli dla mojego użytkownika. Spróbuj tego polecenia, aby to naprawić:
createdb
(odpowiedź przez psql: FATAL: baza danych „<user>” nie istnieje )źródło
Po prostu uruchom ponownie Postgres, gdy tylko pojawi się błąd, uruchamiając,
brew services restart postgresql
a następnie spróbuj ponownieźródło
dla mnie polecenie
rm /usr/local/var/postgres/postmaster.pid
nie zadziałało, ponieważ zainstalowałem określoną wersję postgresql z homebrew.właściwe polecenie to
rm /usr/local/var/postgres@10/postmaster.pid
.wtedy
brew services restart postgresql@10
.źródło
To jest bardzo proste. Dodaj hosta tylko do pliku database.yaml.
źródło