Адаптер Postgresql (pg): не удалось подключиться к серверу

Я получаю эту ошибку при каждом запуске приложения Rails (оно не может подключиться к моему локальному Postgresql)

/Users/leonardo/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-3.2.11/lib/
active_record/connection_adapters/postgresql_adapter.rb:1208:in `initialize': 
could not connect to server: No such file or directory (PG::Error)
   Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?

Я использую Postgres.app, что он работает правильно.

Если я бегу

$ psql

Я могу правильно войти в консоль Postgresql.

$ which psql
 /Applications/Postgres.app/Contents/MacOS/bin/psql

Gemfile

source 'https://rubygems.org'
ruby "1.9.3"

gem 'rails', '3.2.11'
gem "pg"

database.yml

development:
  adapter: postgresql
  encoding: unicode
  username: leonardo
  password: 
  database: zapping
  port: 5432  

Postgresql (Консоль)

$ psql
leonardo=# \l

16 ответов

Решение

Попробуйте добавить host: localhost в вашу базу данных. (На основании: /questions/27192350/razreshenie-postgres-otkazano-v-mac-os-x/27192380#27192380)

Ваш Pg gem был скомпилирован с PostgreSQL libpq, предустановленным в Mac OS X, и вы используете psql что вы установили в более новой версии, или наоборот.

Это можно обойти, указав соединение TCP/IP, добавив localhost в database.yml, но лучше скомпилировать Pg драгоценный камень против libpq для сервера на самом деле вы работаете. Для этого вы должны иметь возможность установить PATH переменная окружения в папку с правильной pg_config в нем перед компиляцией. В вашем случае это будет где-то внутри Postgres.app,

Если это не работает даже после добавления host: localhost, удалить postmaster.pid

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

Ты должен добавить host: localhost к вашей конфигурации БД...

У меня была эта проблема. Один из комментариев здесь помог мне решить проблему.

Спасибо, этот ответ помог мне исправить это. Шаги, которые я предпринял, были просты: 1) gem uninstall pg, 2) установка пакета, готово. - Haslo 3 декабря '13 в 20:27

gem uninstall pg
bundle install

Поскольку это было первое сообщение, появившееся в результатах поиска, я решил опубликовать обновленное исправление для этого. Поскольку ни одно из вышеперечисленных предложений не сработало для меня.

brew postgresql-upgrade-database

Это обновление данных postgresql и перенес мою старую версию. Я был на 9,6 вместо 10,4

Нашел решение здесь

У меня была такая же проблема. Вы должны запустить / запустить postgres. Должно быть, Postgres недавно перестал работать на моем компьютере, поэтому я должен был убедиться, что он работает, запустив сервер Postgres.

postgres -D /usr/local/var/postgres

Затем сработали следующие команды (которые вызывали у меня ту же ошибку, что и у вас):

bundle exec rake db:create db:migrate
bundle exec rspec

У меня была такая же проблема на Mac. Оказывается, что psql, который я имел на своем пути, не работал правильно. Попробуйте запустить psql, набрав:

~/projects/some_project/project-rails$ psql
  psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?

Если вы видите это, это означает, что двоичный файл psql на вашем пути пытается подключиться через сокет и не может это сделать (по какой-либо причине). Так как я уже скачал pgadmin и он подключался нормально, я знал, что это не проблема с сервером.

Исправлено, добавив правильную версию pgsql в мой PATH:

export PATH=/Applications/Postgres.app/Contents/MacOS/bin:$PATH

Теперь psql (и рельсы) счастливы!

find / -name 'postgresql.conf'

netstat -an | grep 5432 # => /tmp/.s.PGSQL.5432

vi / Пользователи / Администратор / Библиотека / Приложение \ Поддержка /Postgres93/var/postgresql.conf

ОТ: unix_socket_directories = '/ tmp'

TO: unix_socket_directories = '/ var / pgsql_socket'

sudo mkdir / var / pgsql_socket

sudo chmod 777 / var / pgsql_socket

Для героку это все что тебе нужно.

heroku addons:create heroku-postgresql

production:
 adapter: postgresql
 encoding: unicode
 host: localhost
 # For details on connection pooling, see rails configuration guide
 # http://guides.rubyonrails.org/configuring.html#database-pooling
 pool: 5

У меня просто была проблема, что приложение postgres не работало на моем Mac...

Моя проблема заключалась в том, что /etc/hosts файл изменен и не имеет этой важной записи: 127.0.0.1 localhost

У меня была такая же проблема в ОС High sierra 10.13. Я следовал инструкциям с этого сайта. Я скачал версию 10.4 ref: https://postgresapp.com/

Затем я добавил это в профиль bash: export PATH=$PATH:/Library/PostgreSQL/10.4/bin:$PATH

перезапустить терминал.

Откройте новое окно терминала и введите: psql -U postgres

после этого вы увидите это сообщение: psql (10.4) Введите "help" для справки.

Postgres=#

На Mac у меня были разные версии postgresql. Эта проблема была решена, когда я пытался brew switch postgresql 9.5.5 (Я не думаю, что номер версии имеет значение в данный момент)

$ brew switch postgresql 9.5.5
Cleaning /usr/local/Cellar/postgresql/9.6.1
Cleaning /usr/local/Cellar/postgresql/9.6.5
Cleaning /usr/local/Cellar/postgresql/10.2
Cleaning /usr/local/Cellar/postgresql/10.3
Cleaning /usr/local/Cellar/postgresql/9.5.5
Cleaning /usr/local/Cellar/postgresql/9.5.4

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

У меня была аналогичная проблема - когда я запускал psqlв терминале у меня все еще была та же ошибка, так что это говорило мне, что это не проблема с жемчужиной pg, и я должен проверить саму настройку postgres. Поэтому я проверил журналы postgres - в моем случае они находились в /usr/local/var/log/postgres.log и я увидел следующую ошибку:

dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.66.dylib
  Referenced from: /usr/local/opt/postgresql/bin/postgres

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

brew switch icu4c 66.1

который решил проблему после перезапуска postgres:

brew services restart postgresql

У меня возникла проблема с подключением, если я установил имя хоста наlocalhostили127.0.0.1. Клиентская библиотека PostgreSQL, похоже, рассматривает это как особые случаи, ища сокет UNIX вместо порта TCP.

Мне удалось решить свою проблему, установив имя хоста наlocalhost.. Замыкающий период не позволяет ему попасть в особый случай и помогает мне.

Другие вопросы по тегам