1. mysql-conector-java 版本默认使用了 8.0.1.5
导致:项目启动时的警告:Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
并且由于我的mysql的版本还是5.6.16,并且我的数据库链接url没有加上serverTimezone=Asia/Shanghai这一参数,导致我的数据库的时间我java项目的时间相隔13个小时,据说这也是因为:
JDBC 与 MySQL 因 “CST” 时区协商误解导致
名为 CST 的时区是一个很混乱的时区,在与 MySQL 协商会话时区时,Java 会误以为是 CST -0500
,而非 CST +0800
。
CST 时区
名为 CST 的时区是一个很混乱的时区,有四种含义:
- 美国中部时间 Central Standard Time (USA) UTC-06:00
- 澳大利亚中部时间 Central Standard Time (Australia) UTC+09:30
- 中国标准时 China Standard Time UTC+08:00
- 古巴标准时 Cuba Standard Time UTC-04:00
今天是“4月28日”。为什么提到日期?因为美国从“3月11日”至“11月7日”实行夏令时,美国中部时间改为 UTC-05:00,与 UTC+08:00 相差 13 小时。
所以:在升级了依赖的版本之前一定要查询可能产生的影响,并多方面测试,避免造成不必要的麻烦。
我的解决方式是mysq-connector还是强制使用原来较低的版本版本,就不会产生相差13个小时和启动的警告了。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.41</version>
</dependency>
参考:
https://juejin.im/post/5902e087da2f60005df05c3d?utm_source=tuicool&utm_medium=referral