我正在尝试使用客户端的ROracle连接到远程Oracle数据库。
建立连接后,我执行此查询:
dat = dbGetQuery(con, "SELECT * FROM TABLE_01")
这会导致错误:
.oci.GetQuery中的错误(conn,statement,data = data,prefetch = prefetch,: try({:ORA-01805:日期/时间操作中可能出错
)出错
我检查了服务器端的数据库版本:
SELECT * FROM V$VERSION
PL/SQL Release 11.2.0.4.0 - Production
CORE 11.2.0.4.0 Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production
然后我在客户端运行genezi:
genezi -v
System name: Linux
Release: 4.4.0-36-generic
Version: #55-Ubuntu SMP Thu Aug 11 18:01:55 UTC 2016
Machine: x86_64
Operating in Instant Client mode.
Small timezone file = timezone_14.dat
Large timezone file = timezlrg_14.dat
客户端和服务器的Oracle版本是11.2。但是时区文件似乎有所不同。如何解决这个问题?
答案 0 :(得分:1)
您很可能在数据库服务器和客户端之间安装了不同的时区。
检查数据库版本:
select * from v$timezone_file;
检查客户端版本:
genezi -v
(您已经完成了 - 您的客户端已经开启14.我怀疑数据库使用的是更新版本。)
答案 1 :(得分:1)
当我在 docker 容器中运行我的 Ruby on Rails 应用程序时,我遇到了这个错误。 (在容器外运行应用程序时没有发生错误。)
我需要从我的 Dockerfile 中删除这一行:
ENV TZ America/New_York
来自 config/application.rb 的这些行:
config.time_zone = 'Eastern Time (US & Canada)'
config.active_record.default_timezone = :local
这似乎解决了问题。