irv*_*ngh 21 postgresql macos osx-mountain-lion
我一直在试图建立的PostgreSQL我的系统上(OSX 10.8,干净的安装),但我遇到了麻烦,使用psql,createdb等等.我已经尝试了各种解决方案,并没有似乎工作.
安装成功,我继续使用以下方法修复已知的套接字问题:
mkdir /var/pgsql_socket
sudo chown $USER /var/pgsql_socket
Run Code Online (Sandbox Code Playgroud)
然后我编辑postgresql.conf,设置unix_socket_directory为
unix_socket_directory = '/var/pgsql_socket'
Run Code Online (Sandbox Code Playgroud)
并重新启动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"?
Run Code Online (Sandbox Code Playgroud)
此外,我已经检查了服务器的状态,它似乎正在运行,但我仍然得到'没有这样的文件或目录'
有任何想法吗?
Dan*_*ité 11
根据该错误信息时,psql首先出现在命令中$PATH具有/tmp作为硬编码的默认Unix套接字目录.
实际上/var/pgsql_socket,由于实际目录,您应该明确告诉它而不是依赖于默认目录:
$ psql -h /var/pgsql_socket [other options]
Run Code Online (Sandbox Code Playgroud)
这同样适用于像其他客户端的命令createdb,dropdb,createuser...
如果您不想-h每次指定,可以将其放入PGHOST环境变量中.
有些人也通过使用TCP连接来解决这个问题,localhost而不是使用Unix套接字目录.
这个问题的根本原因是在Mac OS X上安装PostgreSQL后,系统最终会有两个不同的postgres客户端实例(libpq库psql和其他相关实用程序),一个与MacOS捆绑在一起,另一个与MacOS捆绑在一起.随PostgreSQL安装程序一起提供.
因此,另一种方法是更改您的,$PATH以便在psql安装了系统之前选择安装PostgreSQL(可能/usr/bin/psql).