最近使用MyBatis时发现了java.sql.SQLException: Zero date value prohibited 的异常,网上查了一下原因。其实是Mysql数据库在面对0000-00-00 00:00:00日期的处理时,如果没有设置对应的对策,就会产生异常。
所以解决的方法是在jdbcUrl中设置处理zeroDateTimeBehavior来处理,一般有下面几种
解决方案
- 删除数据库中“0000-00-00 00:00:00”字段,因为是数据错误 (在当前情况不能修改生产数据)
- 编写处理数据为“0000-00-00 00:00:00”字段的方法(可取,但是需要修改每一处有数据为“0000-00-00 00:00:00”的代码段)
- 在 URL 中添加 zeroDateTimeBehavior(最简便)
zeroDateTimeBehavior=convertToNull
db.url=jdbc:mysql://xxx/xxx?useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai&useSSL=false&zeroDateTimeBehavior=convertToNull