Ruby on Rails+OracleでセッションActiveRecord格納時にORA-22920エラー
RailsアプリでセッションをActiveRecord格納するように変更したところ、以下のエラーに見舞われた。
ORA-22920: LOB値を含む行がロックされていません。
どうやら標準Adapter内でロックをしていないことが原因の模様だ。
対策を探してみると、oracle_enhanced-adapterなるものを発見。
このAdapterではLOB型データ行をロックするように改変しているとのことなので、早速導入することにした。
$ gem uninstall activerecord-oracle-adapter $ gem install activerecord-oracle_enhanced-adapter
database.ymlではadapterにoracle_enhancedを指定。
development: adapter: oracle_enhanced database: 192.168.0.11/xe username: oracle password: oracle
セッションをDB格納するので、protect_from_forgeryを有効にする。
●aprication.rb ... #↓secret以降のコメントアウトを外す。 protect_from_forgery #:secret => 'ランダム文字列' ...
これで対策完了。無事にセッションをDBに格納することが出来た。