Ruby on Railsの新機能で、find関数に問題があります。Ruby on Railsで "find"関数の二重引用符を追加する
oracle拡張アダプタ・ガムを使用して従来のOracleデータベースに接続する新しいWebアプリケーションを作成しました。
私はレールのコンソールで次のコマンドを実行すると、私は見つける()関数を使用しようとすると、私は、しかし、バックデータベース
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で、私はruby 1.9.2p290でrails 3.2を使用しています。私も次のように試してみて、同じエラーが発生しました。 License.all
あなたはのいずれかを言及するのを怠っあなたのソフトウェアのバージョン。だから、助けになるのは難しいです。私たちが知っていることは、旧バージョンのDBを扱っていることです... – jdoe
私の問題を解決する解決策は、/config/initializers/oracle.rbファイルのタイムゾーン設定を同じタイムゾーンに合わせて更新することでしたOracleデータベースとして使用します。 – dspencer