如何通过Ruby的pg gem(在Rails之外)连接到Postgres数据库

时间:2013-12-19 00:11:11

标签: ruby postgresql pg

我一直在Rails中使用Postgres而没有问题,并且一直在运行psql而没有问题。但是,我在尝试使用pg gem连接到数据库时遇到了问题。

以下代码:

PG.connect

生成错误/输出:

PG::ConnectionBad: 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"?

无论我是否指定了各种dbname:值,结果都是一样的,或者只是将其设为默认值。

当我点击屏幕顶部的小象图标时,它会显示“在端口5432上运行”,正如我所说,我可以毫无问题地与psql连接。

我找到了非常相似的cannot connect to Postgres (pg) database from my Ruby Script using gem "pg"(This is not rails, just pure ruby),但答案只是说Rails工作正常。

任何指导都将不胜感激。 (注意:我意识到我没有输入任何名称/密码信息,但我没有输入比运行psql并且我收集它时没有达到认证点。)

2 个答案:

答案 0 :(得分:5)

您需要指定主机。它正在尝试连接unix域套接字。 PG应用程序不监听unix套接字(除非你将其配置为),而是在localhost:5432上运行。

 conn = PG.connect( host: 'localhost' )

答案 1 :(得分:0)

实际问题很可能就是你的“pg' gem已链接到libpq动态库的旧版本。有关详细信息和可能的解决方案,请参阅this post