我正在使用带有 unixodbc 的 dbi
和 ruby-odbc
gems 连接到 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.require
(在 Gemfile 中使用 gem 'ruby-odbc', require: 'odbc_utf8'
)还是使用需要 'bundler/setup'
和 需要 '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
是一个作为参数传递给引发异常的方法的变量。
最佳答案
请尝试安装:gem install dbd-odbc
关于ruby - DBI + ruby-odbc 失败,涉及 Bundler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10481881/