我是 ruby on rails 的新手,我遇到了 find 功能的问题。
我创建了一个新的 Web 应用程序,它使用 oracle 增强适配器 gem 连接到旧版 Oracle 数据库。
当我在 rails 控制台中运行以下命令时,我会从数据库中取回数据
License.where(license_no: 'L1234')
或者
License.find_by_license_no('L1234')
但是,当我尝试使用 find() 函数时,出现错误。IE
License.find(:all)
或者
License.all
rails 控制台中的错误输出如下:
irb(main):003:0> License.find(:all)
?[1m?[35mLicense Load (1062.5ms)?[0m SELECT "LICENSE".* FROM "LICENSE"
ActiveRecord::StatementInvalid: OCIError: ORA-01878: specified field not found i
n datetime or interval: SELECT "LICENSE".* FROM "LICENSE"
from stmt.c:289:in oci8lib_191.so
from c:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-o
racle_enhanced-adapter-1.4.1/lib/active_record/connection_adapters/oracle_enhanc
ed_oci_connection.rb:155:in `fetch'
from c:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-o
racle_enhanced-adapter-1.4.1/lib/active_record/connection_adapters/oracle_enhanc
ed_adapter.rb:637:in `block in exec_query'
from c:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-3
.2.2/lib/active_record/connection_adapters/abstract_adapter.rb:280:in `block in
log'
查看错误输出中的 SQL 命令,我注意到选择语句中添加了双引号。当我尝试在 SQL Developer 中运行 SQL 命令时,出现错误。添加双引号有什么原因吗?有没有办法阻止 ruby on rails 在表名中添加双引号?
更新oracle 数据库是 10g,我正在使用带有 ruby 1.9.2p290 的 rails 3.2。我也尝试了以下方法并得到了同样的错误。
License.all