java.sql.SQLException: HOUR_OF_DAY: 2 -> 3

Caused by: org.apache.ibatis.executor.result.ResultMapException: Error attempting to get column 'gmt_created' from result set.  Cause: java.sql.SQLException: HOUR_OF_DAY: 2 -> 3
        at org.apache.ibatis.type.BaseTypeHandler.getResult(BaseTypeHandler.java:83)
        at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.createParameterizedResultObject(DefaultResultSetHandler.java:638)
        ... 108 common frames omitted
Caused by: java.sql.SQLException: HOUR_OF_DAY: 2 -> 3
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:73)
        at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:85)
        at com.mysql.cj.jdbc.result.ResultSetImpl.getTimestamp(ResultSetImpl.java:923)
        at com.mysql.cj.jdbc.result.ResultSetImpl.getTimestamp(ResultSetImpl.java:968)
        at com.alibaba.druid.pool.DruidPooledResultSet.getTimestamp(DruidPooledResultSet.java:366)
        at com.taobao.tddl.jdbc.druid.jdbc.TResultSetWrapper.getTimestamp(TResultSetWrapper.java:318)
        at com.taobao.tddl.client.jdbc.resultset.newImp.ProxyTResultSet.getTimestamp(ProxyTResultSet.java:390)
        at sun.reflect.GeneratedMethodAccessor162.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.ibatis.logging.jdbc.ResultSetLogger.invoke(ResultSetLogger.java:69)
        at com.sun.proxy.$Proxy177.getTimestamp(Unknown Source)
        at org.apache.ibatis.type.DateTypeHandler.getNullableResult(DateTypeHandler.java:39)
        at org.apache.ibatis.type.DateTypeHandler.getNullableResult(DateTypeHandler.java:28)
        at org.apache.ibatis.type.BaseTypeHandler.getResult(BaseTypeHandler.java:81)

最近碰到這麼一個問題。

 

其實是夏令時導致的。不信你可以試試,8.X的版本,DBtime寫 :2020-03-08 02:01:43

就會報錯。

 

我的環境:服務器,mysql都是東八區。使用的springboot2.X,DB中字段類型是timestamp

解決辦法:
 1. mysql-connector-java.jar版本6.x、8.x降級爲5.1.x
 2. 對於高版本jdbc,連接串強制指定時區參數:serverTimezone=GMT%2B8
 3. 對於高版本jdbc,mysql數據庫強制修改time_zone爲“+8:00”,而非“SYSTEM

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章