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