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 

我可以正确login到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 

在这里输入图像说明

    尝试添加host: localhost到您的database.yml。 (基于: https : //stackoverflow.com/a/10793186/919641 )

    您的Pg gem是针对预装在Mac OS X中的PostgreSQL libpq编译的,而您正在使用安装在新版本中的psql ,反之亦然。

    这可以通过指定一个TCP / IP连接来解决,通过将localhost添加到database.yml ,但最好是将Pg gem编译为实际运行的服务器的libpq 。 为此,在编译之前,应该能够将PATH环境variables设置为具有正确pg_config的文件夹。 在你的情况下,将在Postgres.app内的某个地方。

    你应该添加host: localhost到你的数据库configuration…

    如果在添加host: localhost之后仍不起作用,请删除postmaster.pid

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

    我在Mac上遇到同样的问题。 原来,我在我的path上的psql不能正常工作。 尝试通过input以下命令启动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"? 

    如果你看到这个,它表示你的path上的psql二进制文件试图使用套接字进行连接,无法这样做(无论什么原因)。 由于我已经下载了pgadmin并且连接正常,我知道这不是服务器的问题。

    通过将正确版本的pgsql添加到我的PATH来修复它

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

    现在psql(和rails)很高兴!

    find/ -name'postgresql.conf'

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

    vi / Users / admin / Library / Application \ Support / 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

    我有同样的问题。 你必须真正运行/启动postgres。 Postgres最近一定在我的电脑上停止运行,所以我必须通过启动postgres服务器来确保它正在运行

     postgres -D /usr/local/var/postgres 

    然后下面的命令(导致我有同样的错误)都工作:

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

    对于heroku这是你所需要的。

     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 

    我有这个问题。 其中一个评论帮助我解决了这个问题。

    谢谢,这个答案帮助我解决它。 我采取的步骤很简单:1)gem卸载pg,2)捆绑安装,完成。 – 哈罗13年12月3日在20:27

     gem uninstall pg bundle install