Sqitch 无法连接到正在运行的 Postgres 实例

Posted

技术标签:

【中文标题】Sqitch 无法连接到正在运行的 Postgres 实例【英文标题】:Sqitch cannot connect to a running Postgres instance 【发布时间】:2020-10-27 18:11:01 【问题描述】:

我在 OSX 上有一个 Postgres 9.6 实例已启动并正在运行,但是当我在带有 sqitch.conf 的工作目录中尝试 sqitch status 时,Sqitch 抛出以下错误:

$ sqitch status
# On database db:pg:my_db
could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

这很奇怪,因为我已经通过检查 Postgres 的状态并直接登录来检查它是否正在运行:

$ pg_isready 
/tmp:5432 - accepting connections

$ psql -U postgres
psql (9.6.19)
Type "help" for help.
postgres=#

这似乎只是sqitch 的问题。

更多细节,这个 Postgres 是通过brew install postgresql@9.6 安装的,位于默认目录中:

$ which psql
/usr/local/opt/postgresql@9.6/bin/psql

关于 Sqitch,我尝试过使用 Homebrew 安装和使用 Docker(我目前的方法)。 docker install 基于官方说明:

docker pull sqitch/sqitch
curl -L https://git.io/JJKCn -o sqitch && chmod +x sqitch
./sqitch status

我尝试使用sqitch config --user engine.pg.client /usr/local/opt/postgresql@9.6/bin/psql 显式设置psql

无论如何,我仍然使用任何sqitch 命令得到以下信息:

$ sqitch status
# On database db:pg:my_db
could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

我不确定我缺少什么并且可以使用一些输入。提前致谢。

【问题讨论】:

参见 connections on Unix domain socket /var/run/postgresql/.s.PGSQL.5432/tmp:5432 - accepting connections。这通常发生在针对不同版本的libpq 编译或链接程序时。我会尝试将您的连接更改为指向 localhost 而不是套接字(本地)。 【参考方案1】:

我不知道 Brew 安装的 Sqitch 是怎么回事,但是当您从 Docker 映像运行它时,该容器内部没有运行 Postgres,因此与 localhost 的连接将失败。相反,您需要连接到容器外的 Postgres。如果您在 Mac 上运行它,这很简单:确保 Postgres is listening on the IP ports,不仅仅是 Unix 域套接字,以及 specify host.docker.internal as the host name,如下所示:

sqitch status db:pg://host.docker.internal/my_db

【讨论】:

以上是关于Sqitch 无法连接到正在运行的 Postgres 实例的主要内容,如果未能解决你的问题,请参考以下文章

将节点js连接到postgresql(谷歌云平台)

sqitch init snowflake 无法确定 Snowflake 账户名

我们的 GCP docker 实例已启动并正在运行,但是我们无法连接到 GreenPlum

Docker - 无法连接到正在运行的映像

Rails 服务器正在运行,但无法连接到 localhost:3000

Discord bot 正在运行,但无法连接到服务器