LMLPHP后院

数据库 datetime 类型默认值引起 jdbc 报错技术

maybe yes 发表于 2017-09-18 09:35

MySQL 数据库中某些字段类型设置为 datetime,如果不允许为空且默认值设置为 '0000-00-00 00:00:00',Java Bean 中 Date 类型转换会出现如下错误:

jdbc.spi.SqlExceptionHelper   : Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp

解决方案,参考如下 jdbc 配置,加上 zeroDateTimeBehavior=convertToNull 解决问题。

spring.datasource.url=jdbc:mysql://192.168.1.122:3306/db_name?useSSL=true&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull

其实主要问题应该是 MySQL 建表的时候默认值没有设置好,这种情况一般都是字段不允许为 null,默认值为 '0000-00-00 00:00:00' 导致。如果将表中的 datetime 类型字段设置允许为空即可。一般 datetime 类型的字段也没有必要不允许为 null。如下:

`update_time` datetime DEFAULT NULL,

本篇文章,希望给大家带来帮助。

LMLPHP,可爱滴WEB开发框架

2018-02-18 18:42:10 1518950530 0.005348