PostgreSQL的山狮插座问题(PostgreSQL Mountain Lion socket

2019-06-27 04:39发布

我一直在试图建立的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"?

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

有任何想法吗?

Answer 1:

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

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

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

这同样适用于像其他客户端的命令createdbdropdbcreateuser ...

如果你不希望指定-h每次可以放入PGHOST环境变量。

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

这个问题的根源是在Mac OS X上安装PostgreSQL后,系统最终有Postgres的客户端集(的两种不同情况下libpq库, psql和其他相关设施),一个是捆绑在一起的MacOS和其他附带PostgreSQL安装程序。

因此,另一种方法是改变你的$PATH ,这样的psql从PostgreSQL安装得到一个与系统(可能是在安装之前choosen /usr/bin/psql )。



Answer 2:

通过自制安装PostgreSQL 9.2时,我遇到了同样的问题。 psql自带的这个版本看起来/tmp的时候不带任何选项称为插座。

我不觉得自己增加任何新的环境变量,如PGHOST或创建别名psql 。 这没有什么错在做这些事情的,但我只是不喜欢加入我的环境的混乱。

那么,为什么不只是设置unix_socket_directorypostgresql.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选项,而不必增加了一个别名或环境变量。



Answer 3:

我有同样的问题,做你所做的一切后,我也不得不改变我的路径,以便在/ 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的改变生效。



Answer 4:

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

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



文章来源: PostgreSQL Mountain Lion socket issue