首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法用Ruby连接到postgresQL

无法用Ruby连接到postgresQL
EN

Stack Overflow用户
提问于 2016-03-25 23:30:56
回答 1查看 810关注 0票数 1

我在档案馆里搜索过,但找不到解决我进退两难的办法。我正在用Ruby编写代码,并在本地Mac上使用webdriver框架,并希望连接到linux机器上的postgres数据库。

我在本地Mac上安装了所需的红宝石。

*本地宝石*

  • dbd-pg (0.3.9)
  • pg (0.18.4)
  • dbi (0.4.5,0.4.4)

我使用以下代码。

代码语言:javascript
复制
require 'rubygems'
require 'pg'
require 'dbd/pg'
require 'dbi'
conn = PGconn.connect("10.0.xx.xx","5432",'','',"mydbname","dbuser", "") 
res  = conn.exec('select *  from priorities_map;') 
puts res.getvalue(0,0)    
conn.close if conn  

在运行这个程序时,我会得到这些错误

代码语言:javascript
复制
.initialize': Could not connect to server: Connection refused (PG::ConnectionBad)

Is the server running on host "10.0.xx.xx" and accepting
TCP/IP connections on port 5432?

如果我使用代码

代码语言:javascript
复制
 dbh = DBI.connect("dbi:pg:mydbname:ipaddress", "user", "")
 row = dbh.exec('select * from etr_priorities_map;') 
 puts row.getvalue(0,0)
 dbh.disconnect if dbh

我知道错误了

代码语言:javascript
复制
block in load_driver': Unable to load driver 'pg' (underlying error: wrong constant name pg) (DBI::InterfaceError)  from System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'

我是鲁比的新手。我如何解决这些问题?

EN

回答 1

Stack Overflow用户

发布于 2016-03-28 22:28:03

第一个错误,正如@Doon在注释中所说的,来自TCP连接,通常意味着数据库没有监听网络。大多数PostgreSQL包都带有只允许本地连接的默认配置,但您可以通过地址设置通过服务器配置中的网络启用连接。我在我的Mac上通过Homebrew安装了PostgreSQL,我的配置位于/usr/local/var/postgres/postgresql.conf,但是如果您以其他方式安装它,路径可能会有所不同。

第二个错误正在发生,因为连接字符串区分大小写的“驱动程序”部分,而用于Postgres的DBD驱动程序名为Pg,而不是pg。试试这个:

代码语言:javascript
复制
dbh = DBI.connect("dbi:Pg:mydbname:ipaddress", "user", "")

另外,除非您有决心使用Ruby/DBI,否则您可能需要考虑使用最近维护的库。Ruby编写得很好,经过了很好的测试,但是它自2010年以来还没有发布过版本,而且Ruby本身在此期间也发生了很大的变化。

如果您确实想考虑其他的方法,我将续集用于大多数情况,并且我强烈推荐使用它,特别是在Postgres开发中,但是DataMapperActiveRecord都有一个很大的用户群。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36229739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档