我已经安装了Pervasive V10服务器x86和odbc gem。每当我请求从数据库中提取数据时,我都会得到以下错误";IM003(160(由于系统错误1114:动态链接库(DLL(初始化例程失败,无法加载指定的驱动程序。(通用ODBC客户端接口,C:\Program Files(x86(\Persvasive Software\PSQL\bin\w3odbcci.dll(">
1114错误的两个主要原因是:
- 驱动程序(w3odbcci.dll(的路径(C:\Program Files(x86(\Perfrasive Software\PSQL\bin(不在系统路径中
- 你用错比特了。您的RubyonRails是32位还是64位?您需要使用与RubyonRails环境相同的位驱动程序。如果它是64位的,您将需要一个64位的驱动程序
迟到总比不迟到好。。。对我来说,解决问题的是设置以下环境变量:
set RUBY_DLL_PATH=C:Program Files (x86)Pervasive SoftwarePSQLbin
@REM Start the app
bundle exec rails server -b 0.0.0.0 -p 3000
为了完整起见,我的设置如下:
- Windows 2012 r2
- Ruby 2.7.1 32位
gem "rails", "6.1.7"
gem 'odbc_adapter', git: 'https://github.com/patterninc/odbc_adapter.git', branch: "master"
- database.yml(我希望它是只读的,所以这里的openmode是1(:
development:
adapter: odbc
conn_str: "driver={Pervasive ODBC Client Interface};DBQ=MyDB;ServerName=localhost.1583;TransportHint=TCP:SPX;OPENMODE=1;"
我遇到的其他一些错误包括:
IM002 (0) [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified.
- 这是通过从64位ruby安装切换到32位ruby安装来解决的,因为普及的ODBC驱动程序在这个系统上是32位的
odbc.o:odbc.c:(.text+0xc378): undefined reference to `rb_tainted_str_new2'
- 当我将Ruby版本从3.2降级到2.7时,我尝试的odbc gems的各种错误都消失了
che/core_ext/kernel_require.rb:17:in `require': cannot load such file -- arel/visitors/bind_visitor (LoadError)
- 为了解决这个问题,我惊喜地发现instacart的人员已经更新了odbc_adapter gem以使用更新的活动记录模块,然而,我确实遇到了另一个问题:
initialize: wrong number of arguments (given 7, expected 2..5) ArgumentError)
- patterninc fork最终给了我一个fork,它最终能够查找记录并返回而不会崩溃
我现在可以将查询传递到Pervasive,但我还没有探索它的工作效果。