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/questions/21587/postgresql-is-running-locally-but-i-cannot-connect-why
Но разница в том, что у меня есть каталог '/var/pgsql_socket', который читается всем. Я использовал Homebrew, чтобы полностью удалить и переустановить Postgres, но у меня все та же проблема.
6 ответов
Вам необходимо удалить postmaster.pid, который должен находиться по следующему пути:/usr/local/var/postgres/postmaster.pid
Для меня я удалил postmaster.pid в /usr/local/var/postgres
, исправил меня прямо
Более простое решение состоит в том, чтобы найти, где сокет на самом деле против того, где он должен быть. В моем случае я побежал:
$ 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
Используется системный клиент, а не ваша версия brew. Подход символической ссылки длится только до следующего перезапуска. Этот подход устраняет основную проблему, я считаю,
- sudo edit
/etc/paths
- Переместить строку, содержащую
/usr/local/bin
в начало файла. (До/usr/bin
) - Удалите ваши postgres gem (s) (
gem uninstall pg
) - Запустите новую оболочку, чтобы загрузить новые настройки среды
bundle
Это не специфическая проблема OS X. Вам нужно будет почистить установку postgres, а затем снова установить ее. Я сталкивался с этой проблемой на моем Ubuntu 12.04. При очистке предыдущей установки вам нужно будет удалить все пакеты, начиная с postgres (postgresql, postgresql-common, postgresql-client и т. Д.), Другими словами, postgres*. Я не использовал brew, использовал порт на OS X Lion. Я думаю, что эквивалентная команда должна быть sudo brew remove postgres*
, После этого нужно выполнить команду sudo brew install postgresql.
Кроме того, если вы чувствуете, что сервер уже работает, вы можете попробовать sudo -u postgres createuser
, Если это не поможет, вам нужно будет переустановить.
Тем не менее, выход вашего ps aux | grep post
на самом деле сама команда grep. Не работает сервер postgres.
РЕДАКТИРОВАТЬ: Похоже, что следующая ссылка может быть полезной https://dba.stackexchange.com/questions/21587/postgresql-is-running-locally-but-i-cannot-connect-why Если да, то этот вопрос может быть дубликат
У меня была такая же проблема на Mac Serria. В Mac Serria вы можете найти postmaster.pid внутри /Users/<user_name>/Library/Application Support/Postgres/var-9.6
если вы использовали установщик GUI, а не homebrew.
После удаления этого файла все должно работать нормально.