Niedawno zaktualizowałem system do OSX 10.7, w którym to momencie moja instalacja szyn całkowicie się zepsuła podczas próby połączenia z serwerem psql. Kiedy robię to z wiersza poleceń za pomocą
psql -U postgres
działa całkowicie dobrze, ale kiedy próbuję uruchomić serwer lub konsolę Rails z tą samą nazwą użytkownika i hasłem, pojawia się ten błąd
...activerecord-3.0.9/lib/active_record/connection_adapters/postgresql_adapter.rb:950:in `initialize': could not connect to server: Permission denied (PGError)
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?
Wszelkie pomysły, które mogłyby się wydarzyć, byłyby bardzo pomocne! Dzięki!
Odpowiedzi:
To kwestia ŚCIEŻKI. Mac OSX Lion zawiera teraz Postgresql w systemie. Jeśli to zrobisz
which psql
, prawdopodobnie zobaczysz,usr/bin/psql
zamiastusr/local/bin/psql
którego jest poprawny HomeBrew. Jeśli uruchomiszbrew doctor
, powinieneś otrzymać komunikat, że musisz dodaćusr/local/bin
do nagłówka zmiennej env PATH.Edycja pliku .bash_profile lub .profile lub dowolnej powłoki, której używasz, i dodawanie:
export PATH=/usr/local/bin:$PATH
jako pierwszy eksport dla tej
PATH
sesji albo zakończ sesję powłoki, albo źródłowy pliksource ~/.bash_profile
i teraz powinno być OK.źródło
Dla tych, którzy są zainteresowani, poskładałem rozwiązanie. Wszystko, czego potrzebowałem, to dodać
do database.yml dla mojego środowiska i wszystko było sos.
źródło
Miałem ten problem z Mountain Lion, ale jedyną rzeczą, która działała dla mnie, była ta poprawka :
Sprawdź, gdzie jest rzeczywisty cel:
Musiałem utworzyć ten katalog:
Następnie, korzystając z wyniku z powyższego znaleziska, utwórz to dowiązanie symboliczne:
Podejrzewam, że dla większości ludzi na Mountain Lion możesz po prostu stworzyć katalog i wykonać dowiązanie symboliczne i nie marnować czasu na szukanie, chyba że dowiązanie symboliczne nie działa.
PS - mój PostgreSQL został zainstalowany za pośrednictwem oficjalnego instalatora.
źródło
Jeśli problem nadal występuje w przeszłości, zmieniając ścieżkę (tak jak dla mnie), spróbuj również tego ...
Wygląda na to, że problem (częściowo) leży w samym klejnocie pg. Podczas kompilacji określa, gdzie powinno być gniazdo domeny. Jeśli zmienisz lokalizację gniazda domeny po tym, że wydaje się, że nie działa, dopóki nie odbudujesz klejnotu.
źródło
Dla tych, którzy zainstalowali bezpośrednio z oficjalnego instalatora, dodanie hosta do polecenia działa bez zmian ścieżki:
źródło
Miałem ten sam problem i miałem problemy z działaniem rozwiązania Johna Wanga. Jak zauważył Darren, istnieje problem z klejnotem pg. Aby to działało, musiałem:
Następnie zainstaluj ponownie.
Co sprawiło, że działało.
źródło
Wpadłem również na to, ale sam zainstalowałem postgres (nie z homebrew). W takim przypadku musisz znaleźć starą ścieżkę do psql (która może być / usr / local / bin, ale dla mnie był / usr / local / pgsql / bin) i wstawić ją do swojej zmiennej $ PATH.
(przedtem)
which psql
=> / usr / bin / psql(fix) eksport PATH = / usr / local / psql / bin: $ PATH
(po) `which psql '=> / usr / local / psql / bin
Sugestia Johna Wanga, by
source ~/.bash_rc
potem dodać to do bash_rc, jest złota.źródło
Czy to dla homebrew? Wydaje się, że porty umieszczają to w:
Więc upewnij się, że używasz eksportu
Problem z portami Mac: https://trac.macports.org/ticket/30125
źródło
Nie jestem zadowolony z najbardziej uprzywilejowanych odpowiedzi, ponieważ są one albo specyficzne dla użytkownika systemu operacyjnego, albo zmieniają Postgres, aby używał TCP zamiast gniazd domeny, jak wskazał @pilif. Widziałem inne rozwiązanie, które polega na zmianie kolejności domyślnych ścieżek na poziomie systemu, aby sprawdzić ścieżkę Brew'a przed podstawową ścieżką systemową, ale wydaje się to niebezpieczne, ponieważ może mieć wpływ na wszystkie inne kolizje nazw aplikacji, takie jak ta.
Ta strona opisuje rozwiązanie, które znalazł mój współpracownik. Wszystko sprowadza się do wykonania pojedynczego skryptu powłoki
Jest to związane z zastrzeżeniem, że domyślnym systemem Postgres jest każdy zainstalowany napar, więc musisz osądzić, czy jest to odpowiednie dla Ciebie. Nie widzę potrzeby korzystania z Postgres 8.4 powyżej 9.x, ale YMMV
źródło
Innym możliwym rozwiązaniem, które mi pomogło, jest zresetowanie pliku postmastera poprzez jego usunięcie. Po prostu uruchom:
Warto sprawdzić dziennik pod kątem błędów, które można znaleźć tutaj:
Komunikat o błędzie, który miałem:
Potem wszystko działało świetnie.
źródło
W moim przypadku serwer nie uruchomił się z powodu złych ustawień pamięci współdzielonej. Na początku byłem zdezorientowany, ponieważ działało kilka procesów postgres, ale były to standardowe procesy systemowe. Poszukaj
postmaster
procesów!Wszystko, co musiałem zrobić, to zmienić ustawienia pamięci współdzielonej . W moim przypadku nie trzeba było bawić się ustawieniami ścieżki.
źródło
Może być konieczne określenie hosta bazy danych.
źródło
Jeśli podoba Ci się trwała zmiana w $ PATH, spróbuj tego:
spowoduje to przepisanie twojego
~/.MacOSX/environment.plist
.źródło
Jestem nowy w Railsach, ale dodanie do pliku database.yml było następujące :
Nie jestem pewien, dlaczego Railsy domyślnie używają gniazd domen zamiast TCP, podczas gdy PostgreSQL domyślnie nie konfiguruje gniazd domen.
źródło
Mój PostgreSQL jest zainstalowany w / Library / PostgreSQL, więc / usr / var nie działało dla mnie.
Wygląda na to, że Woz ma rację, ponieważ za każdym razem, gdy zamykam pokrywę mojego MacBooka Pro, ulega awarii ... Oto, co zadziałało dla mnie po awarii:
źródło