rsim/oracle-enhanced

Issue using time_zone in database yml connecting to aws rds oracle databases

grantlees opened this issue · 3 comments

Steps to reproduce

use time_zone: "Pacific/Auckland" instead of time_zone: '+13:00' within database.yml file

Expected behavior

ActiveRecord::Base.connection.select_one("select sysdate from dual");
should return a result, the same error below even fails with User.all.first

I am going to create a sample app but as the issue is aws specific I wonder if anyone has ever come across the same sort of issue. I have checked the time_zone files, and though they are different in aws the behaviour works with the offset but not the zone name...

Has anyone had any success using time_come: "region name" in database.yml connecting to an aws oracle rds database?

Ive had a trace done and the data returns from the database but is failing in ruby-oci, however as it shows different behaviour with the adapter config I thought I'd ask here.

Thanks,
Grant

Actual behavior

Can not use the time_zone: xxx config that uses "Pacific/Auckland" when connecting to an aws oracle rds database

F, [2023-01-17T16:45:44.488839 #92] FATAL -- :
ActiveRecord::StatementInvalid (OCIError: ORA-01805: possible error in date/time operation):

ocidatetime.c:119:in oci8lib_270.so
ruby-oci8 (2.2.11) lib/oci8/datetime.rb:393:in get' ruby-oci8 (2.2.11) lib/oci8/cursor.rb:576:in get_data'
ruby-oci8 (2.2.11) lib/oci8/cursor.rb:576:in block in fetch_one_row_as_array' ruby-oci8 (2.2.11) lib/oci8/cursor.rb:575:in collect'
ruby-oci8 (2.2.11) lib/oci8/cursor.rb:575:in fetch_one_row_as_array' ruby-oci8 (2.2.11) lib/oci8/cursor.rb:162:in fetch'
activerecord-oracle_enhanced-adapter (6.1.6) lib/active_record/connection_adapters/oracle_enhanced/

System configuration

ruby '2.7.6'
gem 'rails', '6.1.4.1'

gem 'activerecord-oracle_enhanced-adapter', '~> 6.1.0'
gem 'ruby-oci8'
gem 'ruby-plsql'
gem 'composite_primary_keys'

Oracle 19

--database.yml

development:
adapter: oracle_enhanced
database: name
username: user
password: pwd

time_zone: '+13:00' <--works aws

time_zone: "Pacific/Auckland" <-- doesnt work aws, but does with on premise

Im going to close this issue here, as I had some results after reading this article https://stackoverflow.com/questions/69381749/where-is-the-oracle-instant-client-timezone-file-located and after persevering with this solution after being told many times it would not make a difference....it does....
It goes a long way that I was able to use the adapter config half way there...but yeah...following the steps in the article fixed the issue for me. Cheers

feel free to close when you see fit

Thanks for the report. ORA-01805 error should be fixed at Oracle client layer. So closing this issue.