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