【问题标题】:Connecting to Vertica from Ruby从 Ruby 连接到 Vertica
【发布时间】:2012-02-28 08:24:42
【问题描述】:

我正在尝试使用 Ruby 连接到 Vertica 分析数据库(来自 linux 机器)。我已经验证可以使用isqlunixodbc 进行连接(DSN 在/etc/odbc.ini 中定义,或多或少基于this answer)。

$ isql VerticaDSN
+--------------------------------------------+
| Connected!                                 |
|                                            |
| sql-statement                              |
| help [tablename]                           |
| quit                                       |
|                                            |
+--------------------------------------------+

我还安装了 verticadbiruby-odbc gems(使用 ruby​​ 1.9.2)。我无法连接所有这些,我想知道我是否可能做错了什么或缺少依赖项。

使用 vertica gem:

>> require 'vertica'
=> true
>> client = Vertica.connect({ :host => '10.0.0.15', :user => 'dbadmin', :password => 'pwd' })
Errno::ECONNREFUSED: Connection refused - connect(2)
    from /home/sa125/.rvm/gems/ruby-1.9.2-p290/gems/vertica-0.8.1/lib/vertica/connection:31:in `initialize'
    from /home/sa125/.rvm/gems/ruby-1.9.2-p290/gems/vertica-0.8.1/lib/vertica/connection:31:in `new'
    from /home/sa125/.rvm/gems/ruby-1.9.2-p290/gems/vertica-0.8.1/lib/vertica/connection:31:in `connection'
    from /home/sa125/.rvm/gems/ruby-1.9.2-p290/gems/vertica-0.8.1/lib/vertica/connection:24:in `initialize'
    from /home/sa125/.rvm/gems/ruby-1.9.2-p290/gems/vertica-0.8.1/lib/vertica.rb:11:in `new'
    from /home/sa125/.rvm/gems/ruby-1.9.2-p290/gems/vertica-0.8.1/lib/vertica.rb:11:in `connect'

使用 DBI / ODBC gems:

(使用this

>> require 'dbi'
=> true
>> require 'odbc'
=> true
>> ODBC.datasources
=> [#<ODBC::DSN:0x0000000284c6f8 @name="VerticaDSN", @descr="\"test database\"">]
>> dbc = ODBC.connect('VerticaDSN')
ArgumentError: string contains null byte
    from (irb):15:in `initialize'
    from (irb):15:in `connect'
    from (irb):15
>> dbh = DBI.connect('DBI:ODBC:VerticaDSN', 'dbadmin', 'pwd')
DBI::InterfaceError: Could not load driver (undefined method `driver_name' for ODBC:Module)
    from /home/sa125/.rvm/gems/ruby-1.9.2-p290/gems/dbi-0.4.5/lib/dbi.rb:318:in `rescue in load_driver'
    from /home/sa125/.rvm/gems/ruby-1.9.2-p290/gems/dbi-0.4.5/lib/dbi.rb:242:in `load_driver'
    from /home/sa125/.rvm/gems/ruby-1.9.2-p290/gems/dbi-0.4.5/lib/dbi.rb:160:in `_get_full_driver'
    from /home/sa125/.rvm/gems/ruby-1.9.2-p290/gems/dbi-0.4.5/lib/dbi.rb:145:in `connect'

我在这里遗漏了什么吗?谢谢。

【问题讨论】:

    标签: odbc database-connection ruby-1.9.2 vertica


    【解决方案1】:

    原来将 vertica gem 升级到 --pre 版本解决了使用第一种方法的问题。通过 ruby​​gems 可用的 gem 版本是(此时)0.8.1,似乎效果不佳。根据我从 gem 的作者那里得到的反馈,我改变了我的 Gemfile

    gem 'vertica'
    

    到这里:

    gem 'vertica', '0.9.0.beta9' # current edge
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-25
      • 1970-01-01
      • 2022-08-23
      相关资源
      最近更新 更多