Адаптер 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

enter image description here

Ответ 2

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

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

Ответ 3

вы должны добавить host: localhost в свою конфигурацию db...

Ответ 4

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

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

Ответ 5

У меня была такая же проблема на 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 (и рельсы) счастливы!

Ответ 6

find/-name 'postgresql.conf'

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

vi/Пользователи/admin/Library/Приложение\Поддержка/Postgres93/var/postgresql.conf

FROM: unix_socket_directories = '/tmp'

TO: unix_socket_directories = '/var/pgsql_socket'

sudo mkdir/var/pgsql_socket

sudo chmod 777/var/pgsql_socket

Ответ 7

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

postgres -D /usr/local/var/postgres

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

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

Ответ 8

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

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

Ответ 9

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

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

gem uninstall pg
bundle install

Ответ 10

У меня просто была проблема, что приложение postgres не запускалось на моем mac...