一、问题分析
问题
Error querying database. Cause: java.sql.SQLException: Value'0000-00-00 00:00:00' can not be represented as java.sql.Timestamp
分析
datetime数据库中可为空,其默认值为“0000-00-0000:00:00”,因MySQL的时间类型datetime范围是1000-01-01 00:00:00 到 9999-12-31 23:59:59,所以报错。
二、解决方案
1、在配置数据库连接的url上添加zeroDateTimeBehavior的配置。
示例:
修改前jdbc配置:
jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8&characterSetResults=UTF-8
修改后jdbc配置 :
jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull
2、zeroDateTimeBehavior的所有配置:
- 没有配置。
抛出异常如上所示
- zeroDateTimeBehavior=round
返回值为 0001-01-01 00:00:00.0
- zeroDateTimeBehavior=convertToNull
返回值为 null
3、注意事项
如果是xml配置,需要转义:
转义符号 | 原符号 | 含义 |
---|---|---|
< | < | 小于号 |
> | > | 大于号 |
& | & | 和 |
' | ’ | 单引号 |
" | " | 双引号 |