Comments 3
Пробовали передавать дату как параметр. Проблема возникает с 23:00 до 0:00. Логи с сервера приложения:
[06.04.15 23:56:46:387 MSK] 00000e78 SystemErr R Caused by: java.lang.RuntimeException: Assertion botch: negative time [06.04.15 23:56:46:387 MSK] 00000e78 SystemErr R at oracle.jdbc.driver.DateCommonBinder.setOracleHMS(OraclePreparedStatement.java:18740) [06.04.15 23:56:46:387 MSK] 00000e78 SystemErr R at oracle.jdbc.driver.TimestampBinder.bind(OraclePreparedStatement.java:19245) [06.04.15 23:56:46:387 MSK] 00000e78 SystemErr R at oracle.jdbc.driver.OraclePreparedStatement.setupBindBuffers(OraclePreparedStatement.java:3014) [06.04.15 23:56:46:387 MSK] 00000e78 SystemErr R at oracle.jdbc.driver.OraclePreparedStatement.processCompletedBindRow(OraclePreparedStatement.java:2247) [06.04.15 23:56:46:387 MSK] 00000e78 SystemErr R at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3444) [06.04.15 23:56:46:387 MSK] 00000e78 SystemErr R at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3530) [06.04.15 23:56:46:387 MSK] 00000e78 SystemErr R at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1350)
В такой ситуации стоит сделать следующее:
Если у Oracle Database таймзоны не обновлены, а патчить его особо желания нет, то проблема решается принудительным выставлением у Java часового пояса в виде цифр (например GMT+3). В случае с Glassfish это параметр -Duser.timezone=GMT+3.
Вообще такая ситуация происходит в случае, когда Java передает Ораклу свою таймзону в виде Europe/Moscow, и Оракл проверяет её по своим внутренним таймзонам, в связи с чем переменная CURRENT_TIMESTAMP будет не +3 а +4 в случае с Москвой для изменения часовых поясов 2014 года. Вот такая вот тыква с 23.00 до полуночи получается =)
- Проверить, обновлены ли таймзоны у Java
- Проверить, обновлены ли таймзоны у Oracle Database
Если у Oracle Database таймзоны не обновлены, а патчить его особо желания нет, то проблема решается принудительным выставлением у Java часового пояса в виде цифр (например GMT+3). В случае с Glassfish это параметр -Duser.timezone=GMT+3.
Вообще такая ситуация происходит в случае, когда Java передает Ораклу свою таймзону в виде Europe/Moscow, и Оракл проверяет её по своим внутренним таймзонам, в связи с чем переменная CURRENT_TIMESTAMP будет не +3 а +4 в случае с Москвой для изменения часовых поясов 2014 года. Вот такая вот тыква с 23.00 до полуночи получается =)
Похоже требуется установить патч на java машину.
Sign up to leave a comment.
В поисках несуществующего времени