Postgresql适配器(pg):无法连接到服务器

时间:2013-01-08 22:20:58

标签: ruby-on-rails postgresql rails-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

15 个答案:

答案 0 :(得分:128)

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

答案 1 :(得分:23)

您的Pg gem是根据预装在Mac OS X中的PostgreSQL libpq进行编译的,而您使用的是在较新版本中安装的psql,反之亦然。

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

之内

答案 2 :(得分:23)

如果即使在添加host: localhost后仍无效,请移除postmaster.pid

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

答案 3 :(得分:10)

您应该将host: localhost添加到您的数据库配置...

答案 4 :(得分:6)

我在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并且连接正常,我知道这不是服务器的问题。

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

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

现在psql(和rails)很开心!

答案 5 :(得分:6)

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

postgres -D /usr/local/var/postgres

然后,以下命令(导致我出现同样的错误)全部起作用:

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

答案 6 :(得分:6)

由于这是我搜索结果中出现的第一篇帖子,因此我决定发布更新的修补程序。由于以上建议都不适合我。

brew postgresql-upgrade-database

它升级了postgresql数据并移动了我的旧版本。我在9.6而不是10.4

找到解决方案here

答案 7 :(得分:4)

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

答案 8 :(得分:4)

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

  

谢谢,这个答案帮助我解决了这个问题。我采取的步骤很简单:1)   gem uninstall pg,2)bundle install,done。 - haslo 12年3月3日20:27

gem uninstall pg
bundle install

答案 9 :(得分:2)

对于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

答案 10 :(得分:0)

我遇到的问题是postgres应用程序没有在我的Mac上运行...

答案 11 :(得分:0)

在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命令可以在不切换版本的情况下执行此操作,这是我找不到的。

答案 12 :(得分:0)

我在OS High sierra 10.13上遇到了同样的问题 我按照本网站的说明下载了10.4版本 参考:https://postgresapp.com/

然后我将此添加到bash配置文件中: export PATH = $ PATH:/Library/PostgreSQL/10.4/bin:$ PATH

重新启动终端。

打开新窗口终端,然后键入:psql -U postgres

之后你会看到这条消息: psql(10.4) 输入“帮助”以获取帮助。

postgres =#

答案 13 :(得分:0)

我的问题是/etc/hosts文件已更改,并且没有以下关键条目:127.0.0.1 localhost

答案 14 :(得分:0)

我有一个类似的问题-当我在终端中运行psql命令时,我仍然遇到相同的错误,所以这告诉我pg gem没问题,我应该检查一下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

因此,知道确切的错误可以帮助我解决问题,在我基于this answer的情况下,我解决了问题

brew switch icu4c 66.1

重新启动postgres后解决了该问题:

brew services restart postgresql