2

我正在使用带有 unixodbc 的dbiand ruby-odbcgems 连接到 Exasol,它工作正常,加载如下:

require 'dbi'
require 'odbc_utf8'

当我将 Bundler 添加到组合中时,ruby-odbc 似乎无法找到 odbc 配置:

Could not load driver (undefined method `driver_name' for ODBC:Module)
/usr/lib/ruby/gems/1.9.1/gems/dbi-0.4.5/lib/dbi.rb:318:in `rescue in load_driver'
/usr/lib/ruby/gems/1.9.1/gems/dbi-0.4.5/lib/dbi.rb:242:in `load_driver'
/usr/lib/ruby/gems/1.9.1/gems/dbi-0.4.5/lib/dbi.rb:160:in `_get_full_driver'
/usr/lib/ruby/gems/1.9.1/gems/dbi-0.4.5/lib/dbi.rb:145:in `connect'

我是否需要通过Bundler.requiregem 'ruby-odbc', require: 'odbc_utf8'在 Gemfile 中使用)或使用require 'bundler/setup'and并不重要require 'odbc_utf8'

这就是我尝试连接的方式:

DBI.connect('DBI:ODBC:exa', config['username'], config['password'])

万一这很重要,这就是我的.odbc.ini样子:

[exa]
Driver = /opt/EXASolution_ODBC-4.0.8/lib32/libexaodbc-uo22.so
EXAHOST = 192.168.235.84..86:8563

编辑:它在没有 Bundler 的情况下工作的方式仅适用于 Ruby 1.9.3。在我看来,它像是一个范围界定问题,就像driver_name作为参数传递给引发异常的方法的变量一样。

4

1 回答 1

1

Please try to install: gem install dbd-odbc

于 2015-01-12T14:57:44.927 回答