我是Ruby on Rails的新手,我遇到了find函數的問題。Ruby on Rails將雙引號添加到「查找」功能
我創建了一個新的Web應用程序,它使用oracle增強適配器gem連接到傳統的Oracle數據庫。
當我運行的軌道控制檯下面的命令,我找回數據從數據庫
License.where(license_no: 'L1234')
或
License.find_by_license_no('L1234')
然而,當我嘗試使用的查找()函數,我收到一個錯誤。即
License.find(:all)
或 License.all
在軌控制檯錯誤輸出如下:
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命令,我注意到的是雙引號是添加到select語句中。當我嘗試在SQL Developer中運行SQL命令時,出現錯誤。有什麼理由爲什麼加雙引號?有沒有辦法阻止紅寶石添加到表名稱的雙引號?
UPDATE oracle數據庫是10g,我使用rails 3.2和ruby 1.9.2p290。我也嘗試了以下,並得到了同樣的錯誤。 License.all
你忘了提及任何的你的軟件版本。所以很難有所幫助。我們所知道的是,您正在處理廣告舊版本的數據庫... – jdoe 2012-04-19 13:49:46
看來解決我的問題的解決方案是更新我的/config/initializers/oracle.rb文件中的時區設置以匹配相同的時區作爲Oracle數據庫。 – dspencer 2012-04-19 18:56:43