Używam postgres 9.1 / ruby 1.9.2 / rails 3.1.0 na maxbook air dla lokalnych programistów. Wszystko działa płynnie od miesięcy (chociaż po raz pierwszy opracowałem program na komputerze Mac).
To MacBook Air z zeszłego roku, a dziś dostałem wiadomość o aktualizacji oprogramowania Mac OSX, tak jak kilka razy wcześniej, a mój system pobrał około 450 MB aktualizacji i uruchomił się ponownie. Teraz mówi, że jest w OSX 10.7.3.
Chodzi o to, że postgres przestał działać, kiedy uruchamiam mój cienki serwer (lustro cedru heroku), a następnie przeglądam aplikację railsową:
PG::Error
could not connect to server: Permission denied
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?
Co się stało? Po przejrzeniu kilku pytań wciąż jestem zdezorientowany, ale oto kilka dodatkowych informacji:
- Uruchomienie psql z wiersza poleceń daje ten sam błąd
- Mogę uruchomić pgadmin 3 i połączyć się za jego pośrednictwem i uruchomić SQL bez problemów
- Uruchamianie, które psql pokazuje wersję jako / usr / bin / psql
- Utworzyłem użytkownika PostgreSQL, kiedy dostałem Maca (zawsze był na lwie) Nie mam pojęcia, dlaczego, prawie na pewno podążałem za tutorialem, który zaniedbałem w swoich notatkach. Chodzi o to, że wiem, że istnieje również użytkownik _postgres. Wiem, że to śmieci, ale poza notatką na temat haseł, nie mam żadnych dodatkowych informacji o tym, jak skonfigurowałem postgres - choć oczywistą implikacją jest to, że nie użyłem użytkownika _postgres.
Czy ktoś ma sugestie lub informacje na temat tego, co mogło się zmienić / co mogę spróbować debugować i naprawić? Dzięki.
Edycja: baw się na podstawie tego pytania i odpowiedzi: https://stackoverflow.com/questions/7975414/check-status-of-postgresql-server-mac-os-x , zobacz następujący ciąg poleceń:
$ sudo su postgreSQL
bash-3.2$ /Library/PostgreSQL/9.1/bin/pg_ctl start -D /Library/PostgreSQL/9.1/data
pg_ctl: another server might be running; trying to start server anyway
server starting
bash-3.2$ 2012-04-08 19:03:39 GMT FATAL: lock file "postmaster.pid" already exists
2012-04-08 19:03:39 GMT HINT: Is another postmaster (PID 68) running in data directory "/Library/PostgreSQL/9.1/data"?
bash-3.2$ exit
źródło
Odpowiedzi:
Jeśli maszyna zostanie wyłączona bez faktycznego procesu zamykania, PostgreSQL odmówi uruchomienia podczas następnego rozruchu. Wynika to z faktu, że wcześniejszy plik PID nadal istnieje, a PostgreSQL uważa, że już działa. Tak mówi komunikat o błędzie w Twojej edycji.
Musisz usunąć
postmaster.pid
plik z katalogu PostgreSQL. Według komunikatu swój błąd, pełna ścieżka do pliku PID jest:/Library/PostgreSQL/9.1/data/postmaster.pid
. Usuń ten plik, a PostgreSQL nie uruchomi się bez problemu.źródło