PostgreSQL 服务器发出 unix 域套接字

Posted

技术标签:

【中文标题】PostgreSQL 服务器发出 unix 域套接字【英文标题】:PostgreSQL server issue unix domain socket 【发布时间】:2013-09-08 23:01:06 【问题描述】:

我按照以下步骤使用 Homebrew 安装 PostgreSQL(第一次使用 Homebrew):http://dhilipsiva.blogspot.se/2013/02/install-postgresql-on-os-x-using.html

最后一步没用。我认为它应该启动服务器。但是,我认为我成功创建了数据库集群并按照官方文档(17.2 和 17.3)启动了数据库服务器:http://www.postgresql.org/docs/9.2/interactive/runtime.html

我的问题是,当我尝试在终端中使用createdb mydb 创建数据库时,我收到消息:

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

我很困惑,因为这里抛出的许多概念(如套接字、路径变量等)对我来说都是新的。我也对 Mac OS X 中的目录结构感到困惑,因为我最近从 Windows 迁移。如果有人能指出我正确的方向,将不胜感激。

更新 与往常一样,一旦您发布,您就会找到答案。差不多:这篇文章中接受的答案让我得出结论,我的 Unix 域套接字(不管是什么)位于 Postgres 不期望的地方。

Can't get Postgres started

使用 -h 标志,它可以工作。那么问题来了,如何配置 Postgres 在正确的位置寻找套接字?

【问题讨论】:

【参考方案1】:

您显然正在运行默认的 OS X 提供的 PostgreSQL 客户端,该客户端期望 Unix 域套接字位于与 Homebrew 版本不同的位置。基本上,

/usr/bin/createdb,psql,... ---> /var/pgsql_socket/.s.PGSQL.5432
/usr/local/bin/createdb,psql,... ---> /tmp/.s.PGSQL.5432

因此,请确保您的路径设置正确,以便您调用正确的路径。

或者,您可以像这样覆盖套接字位置:

createdb -h /tmp ...

【讨论】:

以上是关于PostgreSQL 服务器发出 unix 域套接字的主要内容,如果未能解决你的问题,请参考以下文章

Rails 6 无法连接到 AWS Elastic Beanstalk 预置的 RDS。 Unix 域套接字“/var/run/postgresql/.s.PGSQL.5432”

UNIX域套接字

UNIX域协议(命名套接字)

postgresql错误处理

unix进程间通信方式(下)-unix域套接字(转)

couchbase 服务器是不是支持 Unix 域套接字?