error with postgresql datababse : Is the server running locally and accepting connections on Unix domain socket “/var/run/postgresql/.s.PGSQL.5432”?
当我运行
1 2 3 | 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"? |
当我尝试
这是我的database.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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'] %> |
注意:我有数据库
我跑了:
1 2 | create database books_development; create database books_test; |
在psql控制台中。 它说成功完成了
我尝试了很多解决方案,我昨天花了很多时间寻找解决方案,相关问题没有解决方案解决了我的错误。
我有postgresql-9.4(最新版)和xubuntu 14.04版
有任何想法吗?
为Debian或Debian衍生产品(如Ubuntu)打包的PostgreSQL约定是使用
因此,两者之间不匹配的常见根本原因是自编译的客户端内容与预编译的服务器端软件包的混合(即使客户端和服务器安装在同一台机器上,客户端和服务器端也是如此)仍然不同,可能不同步)。
根据提问者的建议从
更好的选择是在
-
host: /tmp 如果实际套接字路径是/tmp (自编译服务器,打包客户端) -
或
host: /var/run/postgresql 如果真正的套接字路径/var/run/postgresql/ (打包服务器,自编译客户端)。
当host字段中的值以斜杠字符开头时,postgres库知道它是本地套接字的目录位置而不是主机名。生成目录
另一种可能性是将自编译的软件包尽可能地与Debian配置,尽可能地覆盖默认值。
在Ubuntu 14.04中向postgres用户输入
对我来说简短的回答是:我的安装创建了一个
1)找到
2)改为
3)添加另一个unix socket目录
4)此时,sudo服务postgresql启动尝试启动但没有权限创建锁文件。
2016-10-05 17:14:55 CEST [28472-1] FATAL: could not create lock file"/var/pgsql_socket/.s.PGSQL.5432.lock": Permission denied
2016-10-05 17:14:55 CEST [28472-2] LOG: database system is shut down
5)更改权限(从Mark Berry的评论中找到)
6)
这最终对我有用
我解决了它。我刚刚创建了一个软链接:
然后编辑了
/etc/postgresql/9.4/main/pg_hba.conf
(如果你有另一个版本的postgresql,你必须在路径中更改9.4)
从:
至:
过时的锁定文件
psql: 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"?
即使显然有一个带有此路径的套接字,如
通过删除锁定文件并重新启动postgresql可以解决该问题。这绝对比清除和重新安装更具侵入性。
1 2 | sudo rm /var/run/postgresql/.s.PGSQL.5432.lock sudo service postgresql restart |
解:
试试这个
1 | export LC_ALL="en_US.UTF-8" |
还有这个。 (9.3是我目前的PostgreSQL版本。写你的版本!)
1 | sudo pg_createcluster 9.3 main --start |
运行
例如:
1 2 | Ver Cluster Port Status Owner Data directory Log file 9.6 main 5432 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log |
如果状态是向下运行
1 2 | #format is pg_ctlcluster <version> <cluster> sudo pg_ctlcluster 9.6 main start |
如果此过程不成功,则会抛出错误。
我的错误是(您可以在
1 2 | FATAL: could not access private key file"/etc/ssl/private/ssl-cert-snakeoil.key": Permission denied Try adding `postgres` user to the group `ssl-cert` |
确保
例如:
它发生在我身上,事实证明我错误地从"ssl-cert"组删除了Postgres用户。运行以下代码以修复用户组问题并修复权限
1 2 3 4 5 6 7 8 9 | #set user to group back with sudo gpasswd -a postgres ssl-cert # Fixed ownership and mode sudo chown root:ssl-cert /etc/ssl/private/ssl-cert-snakeoil.key sudo chmod 740 /etc/ssl/private/ssl-cert-snakeoil.key # now postgresql starts! (and install command doesn't fail anymore) sudo service postgres restart |
当我遇到这个错误时,我的postgres服务器正在一个不同的端口上进行实际监听(5433)。
要解决此问题,请在database.yml中添加一行以指示rails使用相同的行:
1 | port: 5433 |
That means your Postgres server is not running.
从终端检查Postgres服务状态
1 | sudo service postgresql status |
启用Postgres服务,如果没有启动
1 | sudo service postgresql start |
要么
1 | sudo service postgresql restart |
现在你的命令应该工作,如果Postgres服务成功启动。