2012-06-11

railsでoracle9に接続する

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
railsでoracleに接続するには
activerecord-oracle_enhanced-adapter
ruby-oci8
を利用するわけです。

ですが、oracle9に接続しようとすると

OCIError: ORA-01821: 日付書式コードが無効です
from stmt.c:235:in oci8lib.so

とかエラーが出て接続できないことがあります。

これは、config/database.yamlを以下のような感じにnls_timestamp_formatを指定すると回避できます。
develop:
  adapter: oracle_enhanced
  database: ora
  username: user
  password: pass
  nls_timestamp_format: "YYYY-MM-DD HH24:MI:SS"

activerecord-oracle_enhanced-adapterで接続する際にalter sessionを発行しているのですが、
どうもnls_timestamp_formatを指定する際にYYYY-MM-DD HH24:MI:SS:FF6を指定していて
oracle9では、FF6という記述をサポートしていないためエラーが出ているようです。

ちなみにactiverecord-oracle_enhanced-adapterの1.3.1までは、このエラーはでないようです。
1.3.2以降で出るみたいです。


コメントを投稿