【问题标题】:Error using jRuby, warbler, active-record and oracle使用 jRuby、warbler、active-record 和 oracle 时出错
【发布时间】:2014-12-27 19:17:57
【问题描述】:

我使用 warbler 从我的 jRuby 项目中制作 JAR 文件。 当我像

一样在 jRuby 本身中运行我的代码时
jRuby.exe -S test_jdbc.rb 

一切正常。 当我把它吵起来并且我有我的 test_jdbc.jar 文件时,我在运行 JAR 时遇到错误。

产生错误的代码是

#table is in other scheme than the connected scheme so, i have to use both the scheme and the tablename
class Ondon < ActiveRecord::Base
  self.table_name    = 'xxxxxxxx.xxxxx'
  self.sequence_name = 'xxxxxxxx.xxxxxxx'
end

dossier = Ondon.where(rnr13: rnr, dossier_nr: dosnr)
p dossier

错误:org.jruby.embed.EvalFailedException: (StatementInvalid) ActiveRecord::JDBCError: java.sql.SQLSyntaxErrorException: ORA-00942: 表或视图不存在

产生错误的sql是这样的

SELECT "schemename"."tablename".* FROM "schemename"."tablename"  WHERE "schemename"."tablename"."fieldname" = .. etc

如果我在例如 SqlPlus 中运行这个 SQL,我会得到同样的错误

ORA-00942: table or view does not exist

如果我删除 SqlPlus 中方案表和字段名周围的引号,则 sql 运行良好。

我怎样才能避免这个错误?

这里使用的程序和宝石

OS: Windows7
jdbcdriver: ojdbc6.jar
jRuby: 1.7.4
activerecord: 4.1.1
activerecord-jdbc-adapter: 1.3.11
warbler:1.4.4

【问题讨论】:

    标签: activerecord jdbc jruby warbler


    【解决方案1】:

    您只需要使用self.table_name = 'xxxxxxxx.xxxxx' 声明正确的大小写...如果它是在没有引号的情况下创建的,则存储的名称可能是大写的,例如OTHER_SCHEMA.MY_TABLE

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 2015-03-28
      • 1970-01-01
      • 2015-07-03
      相关资源
      最近更新 更多