Java, Mysql, 原创, , ,

解决Java (Spring boot) 读取数据库字段,datetime 格式为null,抛出异常 Zero date value prohibited

使用 Mapper 读取数据库数据时,因时间字段为 null, Java设置该字段为 Instant, 在Mapper转为 List<User>时出了错误,如果使用 List<Object>则不抛异常。

但实际情况我们还是希望使用原数据对象,导致抛出下面错误

Error attempting to get column 'create_time' from result set.  Cause: java.sql.SQLException: Zero date value prohibited
; Zero date value prohibited; nested exception is java.sql.SQLException: Zero date value prohibited

解决方法:

数据库连接语句添加上

zeroDateTimeBehavior=CONVERT_TO_NULL

例如:

jdbc:mysql://localhost:3306/db_test?serverTimezone=UTC&zeroDateTimeBehavior=CONVERT_TO_NULL

参考文档:https://blog.csdn.net/weixin_39731963/article/details/80392155

里面还介绍了 zeroDateTimeBehavior的几种配置

exception(默认),CONVERT_TO_NULL, round

CONVERT_TO_NULL 是把 null 转成 0000-00-00 00:00:00

rand 是 把 null 转为 0001-01-01 14:00:00 (具体没有亲测 )

(2610)

Related Post