21

我一直在尝试在我的系统上设置 PostgreSQL(OSX 10.8,全新安装),但是我在使用 , 等时遇到了麻烦psqlcreatedb我尝试了各种解决方案,但似乎都没有。

安装成功,我继续使用以下方法修复已知的套接字问题:

mkdir /var/pgsql_socket 
sudo chown $USER /var/pgsql_socket

然后我编辑postgresql.conf,设置unix_socket_directory

unix_socket_directory = '/var/pgsql_socket'

并重新启动 Pg。

这显然应该解决了套接字问题,但我仍然得到:

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"?

另外,我检查了服务器的状态,它似乎正在运行,但我仍然得到“没有这样的文件或目录”

有任何想法吗?

4

4 回答 4

11

根据错误消息,psql首先出现在 中的命令$PATH/tmp作为硬编码的默认 unix 套接字目录。

由于实际目录实际上是/var/pgsql_socket,您应该明确告诉它而不是依赖默认值:

$ psql -h /var/pgsql_socket [other options]

这同样适用于其他客户端命令,如createdb, dropdb, createuser...

如果不想-h每次都指定,可以放到PGHOST环境变量中。

有些人还通过使用 TCP 连接localhost而不是使用 Unix 套接字目录来解决这个问题。

此问题的根本原因是,在 Mac OS X 上安装 PostgreSQL 后,系统最终拥有两个不同的 postgres 客户端集(libpqpsql和其他相关实用程序)实例,一个与 MacOS 捆绑在一起,另一个与附带 PostgreSQL 安装程序。

因此,另一种方法是更改​​您的$PATH,以便在psql安装系统之前选择安装的 PostgreSQL(大概是/usr/bin/psql)。

于 2012-08-20T10:00:31.623 回答
1

通过 Homebrew 安装 PostgreSQL 9.2 时,我遇到了同样的问题。psql此构建附带/tmp的在没有任何选项的情况下调用时会查找套接字。

我不想添加任何新的环境变量,例如PGHOSTpsql. 做任何这些事情都没有错,但我只是不想增加我环境的混乱。

那么,为什么不直接设置unix_socket_directory呢?我做了:postgresql.conf/tmp

unix_socket_directory = '/tmp'      # (change requires restart)
#unix_socket_group = ''             # (change requires restart)
#unix_socket_permissions = 0777     # begin with 0 to use octal notation

重新加载后,我可以在$ psql没有-h选项的情况下运行,而无需添加别名或环境变量。

于 2012-12-11T07:38:49.463 回答
0

我遇到了同样的问题,在完成你所做的之后,我还必须更改路径,以便 /usr/local/bin(Homebrew 放置所有内容的地方)位于 /usr/bin 之前。我不知道为什么这不再是默认设置,但是很容易更改。

sudo vi /etc/paths

然后编辑文件以在顶部添加 /usr/local/bin 行。

或者,如果您只想针对您的特定用户帐户进行此更改,请编辑您的 ~/.bash_profile 文件:

touch ~/.bash_profile
vi ~/.bash_profile

并添加这一行:export PATH="/usr/local/bin:$PATH"

然后运行source ~/.bash_profile以使更改生效。

于 2012-09-29T06:01:21.467 回答
0

请参阅下面的问题/链接的已接受答案。为我工作,但请注意要更改的设置是 unix_socket_directories (复数)而不是 unix_socket_directory 所述。

https://dba.stackexchange.com/questions/21587/postgresql-is-running-locally-but-i-cannot-connect-why

于 2013-09-30T09:35:53.923 回答