当我运行rake db:migrate
或运行rails s
命令,我得到同样的错误:
Error : could not connect to server:
No such file or directory Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
当我尝试时,我在浏览器中收到错误rails s
.
这是我的数据库.yml
default: &default
adapter: postgresql
encoding: unicode
pool: 5
development:
<<: *default
database: books_development
test:
<<: *default
database: books_test
production:
<<: *default
database: books_production
username: abd
password: <%= ENV['BOOKS_DATABASE_PASSWORD'] %>
注意:我有数据库books_development
; books_test
;当我尝试时,postgresql 运行没有问题sudo /etc/init.d/postgresql start
我确实跑了:
create database books_development;
create database books_test;
在 psql 控制台中。并表示已经成功完成
我尝试了很多解决方案,昨天花了很多时间寻找解决方案,但相关问题中没有解决方案解决了我的错误。
我有 postgresql-9.4 (最新)和 xubuntu 14.04
有任何想法吗?
为 Debian 或 Debian 衍生品(例如 Ubuntu)打包的 PostgreSQL 的约定是使用/var/run/postgresql
作为 Unix 域套接字的目录。另一方面,自编译 postgres 客户端库的约定是使用/tmp
,除非自行配置。
因此,两者之间这种不匹配的通常根本原因是自编译的客户端内容与预编译的服务器端包的混合(即使客户端和服务器安装在同一台计算机上,客户端和服务器端也是如此)仍然不同并且可能不同步)。
软链接来自/tmp
按照提问者的建议到此目录是有效的,除了每次重新启动时链接都会丢失,因为一般来说/tmp
重启后清空。
更好的选择是添加为条目database.yml
:
当主机字段中的值以斜杠字符开头时,postgres 库知道它是本地套接字的目录位置而不是主机名。目录内的文件名.s.PGSQL.portnumber
已生成且不得指定,只能指定目录。
另一种可能性是将自编译软件包配置为尽可能接近 Debian,覆盖默认值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)