Ошибка при использовании jRuby, warbler, active-record и oracle

Я использую warbler для создания файлов JAR из моего проекта jRuby. Когда я запускаю свой код в самом 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

Если я запускаю этот SQL, например, в SqlPlus, я получаю ту же ошибку.

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

person peter    schedule 31.10.2014    source источник


Ответы (1)


вам просто нужно объявить правильный регистр с помощью self.table_name = 'xxxxxxxx.xxxxx' ... если он был создан без кавычек, вероятно, сохраненные имена указаны в верхнем регистре, например. OTHER_SCHEMA.MY_TABLE

person kares    schedule 12.11.2014