【问题标题】:Assertion botch: negative time oracle 11断言拙劣:负时间预言机 11
【发布时间】:2013-06-01 01:32:50
【问题描述】:

我的 java 应用程序正在尝试对 oracle DB 运行插入查询。 我要插入的表有一个名为 last_modified 的 DATE 字段 我的查询使用时间戳,同时依靠 oracle 转换为日期字段。 每天 23:00 我收到以下错误

java.lang.RuntimeException: **Assertion botch: negative time**
at
oracle.jdbc.driver.DateCommonBinder.setOracleHMS(OraclePreparedStatement.java:18740)
    at
oracle.jdbc.driver.TimestampBinder.bind(OraclePreparedStatement.java:19245)
    at
oracle.jdbc.driver.OraclePreparedStatement.setupBindBuffers(OraclePreparedStatement.java:3014)
    at
oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:9973)
    at
oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:213)

我使用以下方法检查了时区:

SELECT SYSTIMESTAMP, CURRENT_TIMESTAMP, DBTIMEZONE, SESSIONTIMEZONE FROM DUAL;

我得到了:05-JUN-13 08.09.29.244232 AM +02:00, 05-JUN-13 08.09.29.244236 AM +02:00, +00:00,+02:00

客户端 mochine(我有 java 应用程序的那个)和 DB 机器是同一个。但我仍然得到java.lang.RuntimeException: Assertion botch: negative time

我的问题是:

  1. 如何在我的代码中添加一个 catch 块,以避免每天 23:00 重新启动我的应用程序?在我看来,例外是java.lang.RuntimeException,我不能添加catch(java.lang.RuntimeException e),或者我可以吗?

  2. Assertion botch: negative time 是一个断言吗?我可以使用catch (java.lang.AssertionError e) 捕捉它吗?

  3. 我读到,更改 linux 时区后,我应该在机器上重新启动。在那之前,oracle 不会使用新的时区。有没有办法让我知道配置了什么以及 oracle 正在使用哪个时区? 谢谢。

【问题讨论】:

  • 您的错误未完全粘贴。而且你不应该抓住RuntimeExceptions。你能显示一些代码吗?
  • 我不会推荐任何 try/catch 块,因为它会是一个脏补丁。您应该找出发生这种情况的真正原因,可能会发布发生错误的代码块。我在想你可能有一些时间转换没有正确地完成它的工作。
  • 对不起,我无法粘贴我的代码,但我所做的只是将 java Timestamp 类插入到 oracle 日期字段中。

标签: java oracle jdbc oracle11g timestamp-with-timezone


【解决方案1】:

遇到了同样的问题。我们通过使用 vm 参数显式设置 Java 时区来修复它。

-Duser.timezone=<yourTZ>

这是一个奇怪的错误,当 Date 对象在另一端正确时,但当时间落入 TZ 间隙时仍然错误。

【讨论】:

    【解决方案2】:

    升级连接器的版本。如果您使用的是 ojdbc,请更改为较新的版本。我有同样的问题,我使用的是ojdbc6。升级到 12.1.0.1 后一切正常

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-27
      相关资源
      最近更新 更多