psql:无法连接到服务器:没有这样的文件或目录

时间:2014-06-22 21:03:08

标签: macos postgresql osx-mavericks

当我今天下午尝试启动我的本地Postgres服务器时,我收到了以下错误消息:

psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

我尝试按照以下问题对最高评分的答案中的说明进行操作:psql: could not connect to server: No such file or directory (Mac OS X);但是,文件/usr/local/var/postgres/postmaster.pid似乎不存在。

我在OS X Mavericks上运行。


我不完全确定这是否有助于缩小范围,但我昨晚做的最后一件事是尝试一个名为Yasu(http://yasuapp.net/)的OS X系统实用程序。我只能假设当它重新启动系统时,就会出现问题。

1 个答案:

答案 0 :(得分:0)

使用( netstat -ln; ps -ef ) | egrep '(postgres)|(postmaster)|(5432)'之类的命令来尝试确定postgres服务器的实例是否正在运行。

如果postmaster未运行,请删除 postmaster.pid 文件并重新启动数据库。不要在确保数据库没有运行的情况下删除 postmaster.pid 文件,并注意在不启动数据库的情况下删除 postmaster.pid 文件毫无意义。

打开 postgresql.conf 文件并查看 listen_addresses port unix_socket_directory , unix_socket_group unix_socket_permissions 设置可能是问题的根源。

由于引用的错误消息特别提到了套接字文件,因此请仔细查看 unix_socket_directory unix_socket_group unix_socket_permissions

如果 unix_socket_directory 指向 / tmp 以外的其他位置,则存在各种变通方法。

或者,假设服务器正在运行,可能会尝试查找套接字文件而不查看 postgresql.conf 文件,但这可能会使得更难以解决权限,端口等问题。像locatefind等工具可以与sudo root 用户一起使用。

$ sudo find /tmp /var -name .s.PGSQL.5432

假设 .s.PGSQL.5432 文件问题的位置是问题的根本原因,在psql命令行上指定套接字文件位置可能是最简单的解决方法。例如,如果* .s.PGSQL.5432文件位于某些系统上的 / var / pgsql_socket 目录中,请尝试此操作,但当然要使用实际目录 .s.PGSQL.5432 位于:

$ pgsql -h /var/pgsql_socket

如果 .s.PGSQL.5432 文件位于 / tmp 中,那么问题更可能是权限之一,并咨询 postgresql.conf建议使用文件,并且可能必须将尝试psql命令的用户添加到有权访问套接字文件的组中。 (请记住,在更改群组成员资格后退出并重新登录。)