Не удается подключиться к локальному PostgreSQL - PullRequest
124 голосов
/ 11 декабря 2011

Мне удалось создать локальную среду разработки.

Все мои локальные Rails-приложения теперь выдают ошибку:

PGError
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"?

Я понятия не имею, что вызвало это.

При поиске решения я обновил все связанные гемы, обновил системные гемы, обновил MacPorts.Никакой радости.

Другие сообщали об этой проблеме при обновлении с OSX Leopard до Lion из-за путаницы в том, какую версию Postgres следует использовать (то есть версию OSX или версию MacPorts).Я управляю Lion уже несколько месяцев, поэтому кажется странным, что это должно произойти сейчас.

Я не хочу слишком много возиться, не понимая, в чем проблема.Как я могу отладить это методически?

Как определить, сколько версий PostgreSQL в моей системе, к какой из них обращаются и где она находится?Как это исправить, если используется неправильный PostgreSQL?

Извините за вопросы по noob.Я все еще учусь, как это работает!Спасибо за любые ссылки.

РЕДАКТИРОВАТЬ

Некоторые обновления, основанные на предложениях и комментариях ниже.

Я попытался запустить pg_lsclusters, который возвратил ошибку command not found.

Затем я попытался локализовать свой файл pg_hba.conf и нашел следующие три примера файлов:

/opt/local/share/postgresql84/pg_hba.conf.sample
/opt/local/var/macports/software/postgresql84/8.4.7_0/opt/local/share/postgresql84/pg_hba.conf.sample
/usr/share/postgresql/pg_hba.conf.sample

Итак, я предполагаю, что установлены 3 версии PSQL?Macports, OSX по умолчанию и ???

Затем я выполнил поиск сценария запуска launchctl ps -ef | grep postgres, который возвратил

0    56     1   0 11:41AM ??         0:00.02 /opt/local/bin/daemondo --label=postgresql84-server --start-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapper start ; --stop-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapper stop ; --restart-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapper restart ; --pid=none
  500   372     1   0 11:42AM ??         0:00.17 /opt/local/lib/postgresql84/bin/postgres -D /opt/local/var/db/postgresql84/defaultdb
  500   766   372   0 11:43AM ??         0:00.37 postgres: writer process                                                                                                                                                                                                                                                                                                                   
  500   767   372   0 11:43AM ??         0:00.24 postgres: wal writer process                                                                                                                                                                                                                                                                                                               
  500   768   372   0 11:43AM ??         0:00.16 postgres: autovacuum launcher process                                                                                                                                                                                                                                                                                                      
  500   769   372   0 11:43AM ??         0:00.08 postgres: stats collector process                                                                                                                                                                                                                                                                                                          
  501  4497  1016   0 12:36PM ttys000    0:00.00 grep postgres

Я разместил содержимое postgresql84-server.wrapper в http://pastebin.com/Gj5TpP62.

Я пытался запустить port load postgresql184-server, но получил ошибку Error: Port postgresql184-server not found.

Я все еще очень запутался, как это исправить, и ценю любые указатели "для чайников".

Спасибо!

EDIT2

Эта проблема началась после того, как у меня возникли проблемы с daemondo.Мои локальные приложения на Rails терпели крах с ошибкой приложения по типу «gem daemondo не может быть найден».Затем я попытался найти серию обновлений комплектов, обновлений гемов, обновлений портов и обновлений brew.

Может ли эта ошибка быть проблемой с daemondo?

Ответы [ 21 ]

3 голосов
/ 16 августа 2013

У меня была похожая проблема при попытке использовать postgresql с рельсами. Обновление моего Gemfile для использования новой версии gem pg решит эту проблему для меня. (работает gem pg версия 0.16.0). В Gemfile используйте:

gem 'pg', '0.16.0'

затем выполните следующую команду, чтобы обновить гем

bundle install --without production
bundle update
bundle install
3 голосов
/ 12 апреля 2017

Я прочитал много тем об этой ошибке, и я решил просто перезапустить postgres:

sudo service postgresql restart

Который здесь не упоминается.

3 голосов
/ 04 марта 2016
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

Я некоторое время искал решение.Итак, этот исправил проблему и для меня (reinit db):

rm -r /usr/local/var/postgres  
initdb /usr/local/var/postgres -E utf8  
pg_ctl -D /usr/local/var/postgres -l logfile start

Я использую OS X 10.11.3 с brew.

2 голосов
/ 15 апреля 2014

Это случилось со мной сегодня после того, как умерла батарея моего Macbook. Я думаю, что это может быть вызвано неправильным отключением. Все, что вам нужно сделать в таких случаях, как мой, это удалить postmaster.pid

Перейдите в папку

cd /usr/local/var/postgres

Проверьте, присутствует ли postmaster.pid

ls

Удалить postmaster.pid

rm postmaster.pid
2 голосов
/ 05 сентября 2014

Получил эту ошибку, когда я настраивал Posgtres с Django, я использую Back Track и он поставляется с установленным Postgres. Я предполагаю, что настройки - проблема. Я исправил это, удалив полностью, а затем переустановил так.

sudo apt-get remove postgresql
sudo apt-get purge postgresql

Теперь запустите:

apt-get --purge remove postgresql\*

чтобы удалить все PostgreSQL из вашей системы. Недостаточно просто удалить пакет postgres, поскольку он является пустым метапакетом.

Как только все пакеты PostgreSQL будут удалены, запустите:

rm -r /etc/postgresql/
rm -r /etc/postgresql-common/
rm -r /var/lib/postgresql/
userdel -r postgres
groupdel postgres

Теперь вы должны быть в состоянии:

apt-get install postgresql
2 голосов
/ 26 июля 2014

В моем случае ни одно из предыдущих решений не было хорошим. Вместо сокета вы можете использовать номер TCP host + port в конфигурационном файле Rails. Так что в database.yml файле просто добавьте две строки как здесь:

...
adapter: postgresql
encoding: unicode
pool: 5
host: localhost
port: 5432

Это решило мою проблему:)

До того, как я использовал это исправление:

sudo mkdir /var/run/postgresql
sudo ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432

Но после каждой перезагрузки /tmp/.s.PGSQL.5432 удалялся, и мне приходилось повторять эти команды. Решение работает, но оно ужасно, поэтому лучше просто изменить конфигурационный файл базы данных Rails:)

1 голос
/ 02 февраля 2014

Hello world:)
Лучший, но странный способ для меня - делать следующие вещи.

1) Загрузить postgres93.app или другая версия.Добавьте это приложение в папку / Applications /.

2) Добавьте строку (команду) в файл .bash_profile (который находится в моем домашнем каталоге):

export PATH=/Applications/Postgres93.app/Contents/MacOS/bin/:$PATH
Это ПУТЬдо psql с Postgres93.app.Строка (команда) запускается при каждом запуске консоли.

3) Запуск Postgres93.app из папки /Applications/.Он запускает локальный сервер (порт «5432», а хост «localhost»).

4) После всех этих манипуляций я был рад запустить $ createuser -SRDP user_name и другие команды ичтобы увидеть, как это работает!Postgres93.app можно запускать при каждом запуске вашей системы.

5) Кроме того, если вы хотите просмотреть свои базы данных графически, вам следует установить PG Commander.app.Это хороший способ увидеть вашу базу данных postgres в виде симпатичных таблиц данных

Конечно, это полезно только для локального сервера.Я буду рад, если эта инструкция поможет другим, кто столкнулся с этой проблемой.

1 голос
/ 22 апреля 2012

MacOSX здесь.У меня была такая же проблема после обновления моей установки postresql с pre-9.1 до 9.1.2 с использованием homebrew.(Кстати, не забудьте выгрузить базы данных перед обновлением с помощью pg_dump, базы данных до 9.1 несовместимы.) Та же проблема, те же сообщения об ошибках.

Удаление гема pg помогло мне.Мне действительно пришлось потанцевать, чтобы выяснить проблему.Сначала я сделал глобальное удаление драгоценных камней, очистив колоду от всех старых драгоценных камней (их было несколько).Затем я удалил pg из своего Gemfile, восстановил, восстановил ссылку на pg и снова восстановился.

После этого он заработал как шарм.

0 голосов
/ 20 мая 2015

Я попробовал большинство решений этой проблемы, но не смог заставить их работать.

Я запустил lsof -P | grep ':5432' | awk '{print $2}', который показал PID запущенного процесса. Однако я не мог убить его с помощью kill -9 <pid>.

Когда я запустил pkill postgresql, процесс, наконец, остановился. Надеюсь, это поможет.

0 голосов
/ 16 сентября 2014

Меня мучила эта проблема, и при дальнейшем исследовании (при запуске rake db:setup) я обнаружил, что rails пытается подключиться к ранее используемому экземпляру postgres - который был сохранен в переменных env как DATABASE_URL.

Исправление: unset DATABASE_URL

источник: https://stackoverflow.com/a/17420624/2577622

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...