JDBC连接MySQL报告Zero data value prohibited的解决

在SQL Workbench J使用JDBC连接MySQL时候,遇到错误:

Zero data value prohibited

即无法查询特定的表;查询其他表OK。遇到错误的表改成在MySQL命令行下查询正常。

错误信息如下截图。

排查后发现是数据类型的问题,在这张表中,日期为空的时候,默认值是0000-00-00这样的数据类型,这个会导致JDBC报错。

为了解决这个问题,可以通过调整MySQL的表子段类型来解决。如果不希望调整,那么可以在JDBC驱动上增加额外配置来解决。

例如在SQLworkbenchJ上,增加如下参数

?zeroDataTimeBehavior=convertToNull

如下截图。

增加参数后,查询内容正常。如下截图。

至此问题解决。