我一直在试图建立的PostgreSQL我的系统上(OSX 10.8,干净的安装),但我遇到了麻烦,使用psql
, createdb
,等我已经尝试了各种解决方案,并没有似乎工作。
安装成功了,我继续使用下面的修复已知的插座问题:
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"?
另外,我检查了服务器的状态,它似乎在运行,但我仍然得到“没有这样的文件或目录”
有任何想法吗?
根据错误信息,该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的客户端集(的两种不同情况下libpq
库, psql
和其他相关设施),一个是捆绑在一起的MacOS和其他附带PostgreSQL安装程序。
因此,另一种方法是改变你的$PATH
,这样的psql
从PostgreSQL安装得到一个与系统(可能是在安装之前choosen /usr/bin/psql
)。
通过自制安装PostgreSQL 9.2时,我遇到了同样的问题。 psql
自带的这个版本看起来/tmp
的时候不带任何选项称为插座。
我不觉得自己增加任何新的环境变量,如PGHOST
或创建别名psql
。 这没有什么错在做这些事情的,但我只是不喜欢加入我的环境的混乱。
那么,为什么不只是设置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
选项,而不必增加了一个别名或环境变量。
我有同样的问题,做你所做的一切后,我也不得不改变我的路径,以便在/ usr / local / bin目录(其中家酿使一切)到来之前的/ 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
的改变生效。
请参阅下面的问题/链接接受的答案。 为我工作,但要注意更改设置为unix_socket_directories(复数)不是unix_socket_directory的说明。
https://dba.stackexchange.com/questions/21587/postgresql-is-running-locally-but-i-cannot-connect-why