问题标签 [ora-02290]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
14343 浏览

java - 使用 Java、iBatis 和 Oracle 处理 UTC 日期时间的正确方法是什么?

我在我认为纯粹是 UTC 的代码中遇到了一个意外的夏令时问题。我正在使用 Java 1.6、iBatis SQL 映射器 (2.3.3) 和 Oracle XE(Oracle 10.2 的评估版)和 Oracle 瘦驱动程序。

该数据库包含一个表示电视广播时间表的表。每个“资产”(程序)都有一个开始时间和结束时间。这是相关的切片:

asset_time在即将到来的 2009 年 11 月 1 日星期日上午,跨越美国中央夏令时调整的程序正在触发预言机约束。

我有这个数据传输对象(日期是 java.util.Dates):

在 iBatis SQL 映射中,我有将 Asset DTO 插入 Oracle Asset 表的语句:

在 Java 方面,我已经验证我通过这个预插入断言为 iBatis 提供了正确的 UTC 日期输入,它没有被抛出:

就在 Oracle 约束失败之前,上面的代码打印:

我在美国中部时区,格林威治标准时间 -5:00,所以这个程序从凌晨 1:30 开始,到凌晨 2:00 结束。夏令时更改在凌晨 2:00 发生,并将时钟调回凌晨 1:00。

iBatis 报告 Oracle 约束失败(已编辑):

您会注意到,在 Oracle 方面,它看到了带有夏令时调整的 start_time/end_time,因此 iBatis 映射逻辑或 Oracle 驱动程序中的某些内容没有达到我的预期。驱动是ojdbc14.jar,瘦驱动:

确保此代码纯粹是 UTC 的正确方法是什么?

提前致谢!

0 投票
1 回答
19185 浏览

oracle - 缺少详细信息的 Oracle DML 错误

我从这样的批量插入操作中捕获错误:

输出看起来像这样:

我收到错误的事实并不困扰我,因为我正在测试错误处理代码。问题是 Oracle 错误消息没有显示约束名称,即它显示check constraint (.) violated但没有告诉我我违反了哪个检查约束。

有谁知道这是怎么回事?

(甲骨文 10.2 版)