ruby-on-rails 在Ruby on Rails中无法使用ODBC连接到普适数据库

bq8i3lrv  于 2023-04-13  发布在  Ruby
关注(0)|答案(2)|浏览(168)

我已经安装了Pervasive V10服务器x86和odbc gem。每当我请求从数据库中获取数据时,我都会收到以下错误“IM003(160)由于系统错误1114,无法加载指定的驱动程序:动态链接库(DLL)初始化例程失败。(Pervasive ODBC客户端界面,C:\Program Files(x86)\Pervasive Software\PSQL\bin\w3odbcci.dll)”

mlmc2os5

mlmc2os51#

1114错误的两个主要原因是:

  • 驱动程序(w3odbcci.dll)的路径(C:\Program Files(x86)\Pervasive Software\PSQL\bin)不在系统路径中。
  • 您使用的位数不对。您的Ruby on Rails是32位还是64位?您需要使用与Ruby on Rails环境相同的位驱动程序。如果是64位,则需要64位驱动程序。
fwzugrvs

fwzugrvs2#

我想迟做总比不做好......对我来说,解决这个问题的方法是设置以下环境变量:

set RUBY_DLL_PATH=C:\Program Files (x86)\Pervasive Software\PSQL\bin\

@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 torb_tainted_str_new2'`
  • 当我将Ruby版本从3.2降级到2.7时,我尝试的odbcgems的各种make错误都消失了
  • che/core_ext/kernel_require.rb:17:inrequire': cannot load such file -- arel/visitors/bind_visitor (LoadError)`
  • 为了解决这个问题,我惊喜地发现instacart的人已经更新了odbc_adapter gem,以便与更新的activerecord模块一起使用,然而,我确实遇到了另一个问题:
  • initialize: wrong number of arguments (given 7, expected 2..5) ArgumentError)
  • patterninc fork然后终于给了我一个fork,它最终能够查找记录并返回而不会崩溃

我现在能够让查询通过普及,我还没有探索如何以及这种工作虽然。

相关问题