66

每次运行我的 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

宝石文件

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

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

数据库.yml

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

Postgresql(控制台)

$ psql
leonardo=# \l

在此处输入图像描述

4

15 回答 15

137

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

于 2013-01-08T22:40:02.487 回答
26

您的Pggem 是针对 Mac OS X 中预安装的 PostgreSQL libpq 编译的,并且您正在使用psql您在较新版本中安装的那个,反之亦然。

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

于 2013-01-09T03:12:13.030 回答
25

如果添加后仍然无效host: localhost,请删除postmaster.pid

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

于 2017-06-25T00:06:08.673 回答
11

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

于 2013-01-08T22:35:56.083 回答
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并且连接正常,我知道这不是服务器的问题。

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

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

现在 psql(和 rails)很高兴!

于 2013-07-19T12:19:52.700 回答
6

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

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

gem uninstall pg
bundle install
于 2017-11-20T16:03:40.927 回答
6

由于这是出现在我的搜索结果中的第一篇文章,因此我决定为此发布更新的修复程序。由于上述建议都不适合我。

brew postgresql-upgrade-database

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

在这里找到了解决方案

于 2018-06-12T14:03:34.047 回答
6

我有同样的问题。你必须实际运行/启动 postgres。Postgres 最近一定已经停止在我的计算机上运行,​​所以我必须通过启动 postgres 服务器来确保它正在运行

postgres -D /usr/local/var/postgres

然后以下命令(导致我遇到与您相同的错误)都起作用了:

bundle exec rake db:create db:migrate
bundle exec rspec
于 2016-11-02T15:06:18.243 回答
5

查找 / -name 'postgresql.conf'

网络统计-an | grep 5432 # => /tmp/.s.PGSQL.5432

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

于 2014-01-13T08:25:43.133 回答
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
于 2015-07-14T20:22:03.653 回答
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

所以知道确切的错误帮助我解决了这个问题,在我的情况下,我运行了这个答案

brew switch icu4c 66.1

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

brew services restart postgresql
于 2020-09-23T02:48:21.413 回答
0

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

于 2018-10-04T15:59:17.013 回答
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) 键入“help”寻求帮助。

postgres=#

于 2018-06-02T17:57:47.953 回答
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 命令可以在不切换版本的情况下执行此操作,但我找不到。

于 2018-03-30T16:56:46.803 回答
0

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

于 2017-12-21T10:32:08.693 回答