Mac OSX Lion Postgres не принимает подключения на/tmp/.s.PGSQL.5432

Я получаю общую ошибку Mac OSX для Homebrew установок Postgres,

No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

Это, по-видимому, связано с наличием нескольких систем в системе. Однако обычные шаги не разрешают.

Я могу успешно запустить Postgres и запустить:

ps auxw | grep post

возвращает..

euanmillar       847   0.0  0.0  2432768    588 s000  R+   11:19am   0:00.00 grep postgres
euanmillar       845   0.0  0.0  2439324    448   ??  Ss   11:19am   0:00.00 postgres:
stats collector process
euanmillar       844   0.0  0.0  2443176   1520   ??  Ss   11:19am   0:00.00 postgres:
autovacuum launcher process
euanmillar       843   0.0  0.0  2443044    544   ??  Ss   11:19am   0:00.00 postgres: wal writer process
euanmillar       842   0.0  0.0  2443044    584   ??  Ss   11:19am   0:00.00 postgres: writer process
euanmillar       841   0.0  0.0  2443044    596   ??  Ss   11:19am   0:00.00 postgres: checkpointer process
euanmillar       839   0.0  0.0  2443044   3616 s000  S    11:19am   0:00.02 /us

поэтому он выглядит как работает postgres.

Я прокомментировал следующие строки в postgresql.conf

port = 5432
unix_socket_directory = '/var/pgsql_socket'
unix_socket_permissions = 0777

и в var/pgsql_socket/У меня есть скрытый файл .s.PGSQL.5432

Я пробовал решения для многих сообщений здесь. Это особенно похоже на сходство:

https://dba.stackexchange.com/info/21587/postgresql-is-running-locally-but-i-cannot-connect-why

Но разница в том, что у меня есть каталог '/var/pgsql_socket', который CHOWN-ed для всех. Я использовал Homebrew для полного удаления и повторной установки Postgres, и все же у меня такая же проблема.

Ответ 1

Вам нужно удалить postmaster.pid, который должен находиться по следующему пути: /usr/local/var/postgres/postmaster.pid

Ответ 2

Для меня я удалил postmaster.pid в /usr/local/var/postgres. исправил меня прямо.

Ответ 3

Более простым решением является поиск места, где фактически находится сокет, где и ожидалось. В моем случае я побежал:

$ locate PGSQL.5432
/private/var/pgsql_socket/.s.PGSQL.5432
/private/var/pgsql_socket/.s.PGSQL.5432.lock

Затем просто привяжите ожидаемое расположение ячеек к фактическому местоположению сокета.

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

Ответ 4

Используется системный клиент, а не версия brew. Подход symlink продолжается только до следующего перезапуска. Этот подход фиксирует корневую проблему, я полагаю,

  • sudo edit /etc/paths
  • Переместите строку, содержащую /usr/local/bin, в начало файла. (До /usr/bin)
  • Удалите драгоценный камень postgres (gem uninstall pg)
  • Запустите новую оболочку для загрузки новых настроек среды.
  • bundle

Ответ 5

Это не проблема конкретной ОС. Вам нужно будет очистить установку postgres, а затем снова установить ее. Я столкнулся с этой проблемой на моем ubuntu 12.04. При очистке вашей предыдущей установки вам нужно будет удалить все пакеты, начиная с postgres (postgresql, postgresql-common, postgresql-client и т.д.), Другими словами, postgres *. Я не использовал brew, использовал порт для OS X Lion. Я думаю, что эквивалентная команда должна быть sudo brew remove postgres*. Sudo brew установите postgresql, затем выполните трюк.

Кроме того, если вы чувствуете, что сервер уже запущен, вы можете попробовать sudo -u postgres createuser. Если это не удастся, вам нужно будет переустановить.

Однако вывод вашего ps aux | grep post на самом деле является самой командой grep. Не работает сервер postgres.

EDIT: Похоже, что следующая ссылка может помочь https://dba.stackexchange.com/questions/21587/postgresql-is-running-locally-but-i-cannot-connect-why Если да, то этот вопрос может быть дубликатом.

Ответ 6

У меня была такая же проблема на Mac Serria. В Mac Serria вы можете найти postmaster.pid внутри /Users/<user_name>/Library/Application Support/Postgres/var-9.6, если вы использовали установщик GUI, а не homebrew.

После удаления этого файла все должно работать нормально.