0

sqitch status我在 OSX 上有一个 Postgres 9.6 实例,该实例已启动并正在运行,但是当我在工作目录中尝试使用以下命令时,Sqitch 会引发以下错误sqitch.conf

$ 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

我也尝试过psql明确设置sqitch config --user engine.pg.client /usr/local/opt/postgresql@9.6/bin/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"?

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

4

1 回答 1

0

我不知道 Brew 安装的 Sqitch 是怎么回事,但是当您从 Docker 映像运行它时,该容器内部没有运行 Postgres,因此与 localhost 的连接将失败。相反,您需要连接到容器外的 Postgres。如果您在 Mac 上运行它,这很简单:确保Postgres 正在侦听 IP 端口,而不仅仅是 Unix 域套接字,并指定host.docker.internal为主机名,如下所示:

sqitch status db:pg://host.docker.internal/my_db
于 2021-01-09T18:22:46.657 回答