MySQL8 JDBC连接zeroDateTimeBehavior注意事项

丈夫欲遂平生志,一载寒窗一举汤。这篇文章主要讲述MySQL8 JDBC连接zeroDateTimeBehavior注意事项相关的知识,希望能为你提供帮助。


前段时间,研发反馈个问题:
一个新上的服务,在测试环境(mysql5.6)跑的的好好的,发布到产线去(MySQL8.0.19) 运行不起来了,报错如下:



运行异常的jdbc连接串写法:
jdbc:mysql://test.mysql.db01:3306/sbtest?allowMultiQueries=true& useSSL=false& useUnicode=true& characterEncoding=UTF-8& autoReconnect=true& zeroDateTimeBehavior=convertToNull& useJDBCCompliantTimezoneShift=true& useLegacyDatetimeCode=false& serverTimezone=GMT%2B8& nullCatalogMeansCurrent=true


修改后的如下:
jdbc:mysql://test.mysql.db01:3306/sbtest?allowMultiQueries=true& useSSL=false& useUnicode=true& characterEncoding=UTF-8& autoReconnect=true& zeroDateTimeBehavior=CONVERT_TO_NULL& useJDBCCompliantTimezoneShift=true& useLegacyDatetimeCode=false& serverTimezone=GMT%2B8& nullCatalogMeansCurrent=true


问题:
在UAT环境(阿里云MySQL RDS8.0.18),上述的“运行异常的jdbc连接串” 服务可以正常运行。 到了生产MGR8.0.19就跑不起来。 二者只有1个小版本差距,查了mysql8.0.19的release note 也没找到关于zeroDateTimeBehavior这块的大的改动。 


总体而言, 对应MySQL8的,连接还是用CONVERT_TO_NULL这种写法才是稳妥之道。


【MySQL8 JDBC连接zeroDateTimeBehavior注意事项】




    推荐阅读