Ruby / PG - 无法连接到PostgreSQL

时间:2018-01-04 01:00:46

标签: ruby linux postgresql

我在Windows上设置了一个新的Linux子系统(Ubuntu)来运行Ruby脚本,但PG gem无法连接到我的PostgreSQL服务器。看起来我可以在终端中使用psql连接(我认为),但不使用irb。

问题:

如果我在IRB中运行以下命令(在Linux子系统shell中):

require 'pg'
PG.connect(:dbname=>"postgres")

我收到以下错误:

  

PG :: ConnectionBad:无法连接到服务器:没有这样的文件或目录
          服务器是否在本地运行并接受Unix域套接字“/var/run/postgresql/.s.PGSQL.5432”上的连接?

但是,如果我使用psql来选择版本(),它会返回那么好:

psql -p 5432 -h localhost -U postgres
postgres=# select version();

返回:

  

x86_64-pc-mingw64上的PostgreSQL 10.1,由gcc.exe编译(Rev5,由MSYS2项目构建)4.9.2,64位(1行)

我应该提一下,我在我的Windows环境中安装了Postgres,而不是在Linux子系统中安装 - 但是,由于子系统的限制,这似乎是我在网上阅读的唯一方法。< / p>

我不确定这是属于这里还是属于超级用户或unix / ubuntu SE,但我的基本故障排除表明这是Ruby / pg gem的问题,而不是子系统,所以我在这里发布我的问题第一

1 个答案:

答案 0 :(得分:2)

默认连接是UNIX socket(准文件,您可以通过错误消息/var/run/postgresql/.s.PGSQL.5432看到),而不是TCP套接字(主机:端口)。将您的主机/端口明确传递给PG.connect

PG.connect(dbname: "postgres", host: 'localhost', port: 5432)