我的java应用程序正在尝试运行对oracle DB的插入查询。我要插入的表有一个名为last_modified的日期字段,我的查询使用时间戳,同时依靠oracle将其转换为DATE字段。每天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
我的问题是:
java.lang.RuntimeException,我不能添加catch(java.lang.RuntimeException e),或者可以吗?Assertion botch: negative time是一种断言吗?我能用catch (java.lang.AssertionError e)抓到它吗?发布于 2015-03-10 09:47:30
也有同样的问题。我们通过使用vm显式设置Java时区来修正它。
-Duser.timezone=<yourTZ>这是一个奇怪的错误,当日期对象在另一端是正确的,但是当时间落在TZ间隙时仍然是错误。
发布于 2017-02-14 10:32:28
升级连接器的版本。如果您使用的是ojdbc,请更改为新版本。我也有同样的问题,我使用的是ojdbc6。在我升级到12.1.0.1之后一切都很好
https://stackoverflow.com/questions/16938424
复制相似问题