Naprawa Postgresql po aktualizacji do OSX 10.7 Lion

Niedawno uaktualniłem do OSX 10.7, w którym to momencie moja instalacja rails całkowicie się zepsuła podczas próby połączenia z serwerem psql. Gdy robię to z linii poleceń używając

psql -U postgres

Działa całkiem dobrze, ale kiedy próbuję uruchomić serwer lub konsolę rails z tą samą nazwą użytkownika i hasłem, dostaję 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, co może się dziać, będą bardzo pomocne! Dzięki!

Author: Spike, 2011-07-21

15 answers

To kwestia ścieżki. Mac OSX Lion zawiera teraz Postgresql w systemie. Jeśli wykonasz which psql prawdopodobnie zobaczysz usr/bin/psql zamiast usr/local/bin/psql, który jest prawidłowy. Jeśli uruchomisz brew doctor powinieneś otrzymać komunikat, że musisz dodać usr/local/bin do głowicy zmiennej PATH env.

Edycja twojego .bash_profile lub .profil lub jakąkolwiek powłokę używasz i dodajesz: export PATH=/usr/local/bin:$PATH

Jako pierwszy Eksport dla PATH Następnie albo zamknąć sesję powłoki lub źródło pliku z source ~/.bash_profile i teraz powinno być znowu OK.

 291
Author: John Wang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-21 07:17:54

Dla tych z Was, którzy są zainteresowani, poskładałem rozwiązanie. Wszystko czego potrzebowałem to dodać

host: localhost

Do bazy danych.yml dla mojego środowiska i wszystko było sosem.

 90
Author: Dave G,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-21 02:36:11

Miałem taki problem z Mountain Lion ale jedyne co mi pomogło to Ta poprawka :

Sprawdź, gdzie znajduje się rzeczywisty cel:

sudo find / -name .s.PGSQL.5432

Musiałem utworzyć ten katalog:

mkdir /var/pgsql_socket/

Następnie używając wyniku z powyższego znaleziska Utwórz ten dowiązanie symboliczne:

ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/

Podejrzewam, że dla większości ludzi na Mountain Lion można po prostu utworzyć katalog i zrobić dowiązanie symboliczne i nie tracić czasu na szukanie, chyba że dowiązanie symboliczne nie działa.

PS-my PostgreSQL został zainstalowany poprzez oficjalny instalator.

 46
Author: Ben,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-23 14:57:35

Jeśli problem utrzymuje się po zmianie ścieżki (tak jak dla mnie), spróbuj również tego...

gem pristine pg

Wydaje się, że problem (częściowo) leży w samym klejnocie pg. Kiedy buduje, domyśla się, gdzie powinno znajdować się gniazdo domeny. Jeśli zmienisz lokalizację gniazda domeny po tym, jak wydaje się, że nie zadziała, dopóki nie odbudujesz klejnotu.

 29
Author: Darren,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-29 07:07:46

Dla tych, którzy zainstalowali bezpośrednio z oficjalnego instalatora, samo dodanie hosta do polecenia działa bez zmian ścieżki:

psql -h localhost -U postgres
 15
Author: Rogerio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-23 20:45:43

Miałem ten sam problem i miałem problemy z rozwiązaniem Johna Wanga. Jak zauważył Darren, jest problem z klejnotem pg. Aby to zadziałało potrzebowałem:

gem uninstall pg

Następnie zainstaluj ponownie.

/ Align = "left" /
 5
Author: vladiim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-10 04:01:53

Też na to wpadłem, ale sam zainstalowałem postgres (nie z homebrew). Jeśli tak jest, musisz znaleźć starą ścieżkę do psql (którą może być / usr / local / bin, ale dla mnie był / usr / local / pgsql / bin) i poprzedzić ją do swojej $PATH.

(przed) which psql = > /usr/bin / psql

(fix) export PATH= / usr / local / psql / bin:$PATH

(po) `which psql " = > /usr/local/psql / bin

Sugestia Johna Wanga do source ~/.bash_rc po dodaniu tego do bash_rc jest złota.

 3
Author: tjarratt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-22 16:55:07

To dla homebrew? Ports wydaje się umieścić go w:

/opt/local/lib/postgresql91 

Więc upewnij się, że używasz export

PATH=/opt/local/lib/postgresql91/bin:$PATH

Problem z portami Mac: https://trac.macports.org/ticket/30125

 3
Author: Antony Stubbs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-23 20:53:06

Nie jestem zadowolony z najbardziej upvoted odpowiedzi, ponieważ są one albo OS-user specyficzne lub remap Postgres używać TCP zamiast gniazd domenowych, jak zauważył @pilif. Widziałem inne rozwiązanie, które polega na ponownym uporządkowaniu domyślnych ścieżek na poziomie systemu, aby sprawdzić ścieżkę Brew przed podstawową ścieżką systemu, ale wydaje się to niebezpieczne, ponieważ może mieć wpływ na wszystkie inne kolizje nazw aplikacji, takie jak ta.

Ta strona zawiera szczegóły rozwiązania, które znalazł mój współpracownik. Sprowadza się do wykonanie pojedynczego skryptu powłoki, który

  1. Utwórz kopię zapasową plików Postgres 8.4 w oddzielnym katalogu
  2. symlink instalacja Postgres w brew

Jest to z zastrzeżeniem, że systemowy domyślny Postgres jest tym, co zainstalował brew, więc musisz podjąć decyzję, czy to jest odpowiednie dla Ciebie. Nie widzę potrzeby Postgres 8.4 specjalnie na 9.x, ale YMMV

 1
Author: Eric Hu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-17 02:51:40

Innym możliwym rozwiązaniem, które zadziałało dla mnie, jest zresetowanie pliku postmaster przez usunięcie go. Po prostu uruchom:

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

Warto sprawdzić log pod kątem błędów, które można znaleźć tutaj:

/usr/local/var/postgres/server.log

Komunikat o błędzie, który miałem to:

FATAL:  lock file "postmaster.pid" already exists
HINT:  Is another postmaster (PID 161) running in data directory 
"/usr/local/var/postgres"?
Potem wszystko działało świetnie.
 1
Author: mike,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-03 00:35:00

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. Szukaj postmaster procesów!

Wszystko, co musiałem zrobić, to zmienić ustawienia pamięci współdzielonej . Grzebanie w Ustawieniach ścieżki nie było potrzebne w moim przypadku.

 0
Author: Ortwin Gentz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:17:09

Może być konieczne podanie hosta bazy danych.

 0
Author: user618589,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-03 18:13:24

Jeśli podoba Ci się stała zmiana w Twojej $ PATH Spróbuj tego:

defaults write $HOME/.MacOSX/environment PATH "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/opt/local/bin"

To zmieni Twoje ~/.MacOSX/environment.plist.

 0
Author: gylow,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-29 01:10:22

Jestem nowy w Rails, ale dodaję następujące elementy do bazy danych.YML działa dla mnie:

host: localhost

port: 5432

Nie wiem dlaczego Rails domyślnie ustawia gniazda domenowe zamiast TCP, podczas gdy PostgreSQL domyślnie nie ustawia gniazd domenowych.

 0
Author: Ken Freeman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-15 22:09:13

Mój PostgreSQL jest zainstalowany w / Library / PostgreSQL tak, że /usr / var rzeczy nie działa dla mnie.

Wygląda na to, że Woz jest poprawny, ponieważ za każdym razem, gdy zamykam pokrywę mojego MacBooka pro, zawiesza się... Oto, co zadziałało po wypadku dla mnie:

sudo su postgres -c "/Library/PostgreSQL/9.2/bin/pg_ctl -m fast -D /Library/PostgreSQL/9.2/data restart"
 0
Author: sethmuss,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-27 17:47:38