Heb*_*hmy 8 activerecord ruby-on-rails jruby jdbc orientdb
将OrientDB的JDBC驱动程序与ActiveRecord一起使用的正确方法是什么?
我正在尝试将Rails 3.2应用程序连接到OrientDB 1.4.我安装了gem activerecord-jdbc-adapter
,并配置database.yml
如下:
development:
adapter: jdbc
username: admin
password: admin
driver: com.orientechnologies.orient.jdbc.OrientJdbcDriver
url: jdbc:orient:local:db/test_db2
Run Code Online (Sandbox Code Playgroud)
我按如下方式加载OrientDB的JDBC驱动程序:
# in config/application.rb:
require '/home/myuser/jars/orientdb-jdbc-1.4.0-all.jar'
Run Code Online (Sandbox Code Playgroud)
应用程序启动(使用rails s
)时抛出以下异常:
java.lang.NullPointerException
at arjdbc.jdbc.RubyJdbcConnection.unmarshalResult(RubyJdbcConnection.java:1187)
at arjdbc.jdbc.RubyJdbcConnection.set_native_database_types(RubyJdbcConnection.java:537)
at arjdbc.jdbc.RubyJdbcConnection$INVOKER$i$0$0$set_native_database_types.call(RubyJdbcConnection$INVOKER$i$0$0$set_native_database_types.gen)
...
Run Code Online (Sandbox Code Playgroud)
我的配置中是否缺少某些内容?将OrientDB的JDBC驱动程序与ActiveRecord一起使用的正确方法是什么?
虽然activerecord-jdbc-adapter
(理论上)支持任何 JDBC 兼容驱动程序,但它使用 API 并做出一些假设,这些假设可能对某些人来说不太适用。特别是。与不完全兼容的驱动程序,例如orientdb-jdbc(至少版本 1.4)。
在这种情况下,AR-JDBC 尝试从数据库元数据解析支持的类型:http://git.io/s7g47A,但由于metadata.getTypeInfo()
返回意外的对象null
而不是实际的ResulSet
对象,所有这些都严重失败。这可以通过重写native_database_types
Ruby 中的方法和/或 AR-JDBC 端的一些附加代码来处理“null”类型来改进 - 尽管对于 OrientDB 的“驱动程序”来说,它仍然可能不足以使其与 AR-JDBC 完全兼容。 . 听起来非常适合 AR-JDBC 扩展(假设 OrientDB 可以处理 ActiveRecors/AREL 将生成的 SQL)。
归档时间: |
|
查看次数: |
858 次 |
最近记录: |