这里列举了mysql升级到8.0后项目遇到的一些问题
一、Unknown system variable ‘tx_isolation’
出现这个异常,是因为mysql-connector-java.jar的版本太低,数据库的版本太高,不匹配导致的。
因此将mysql-connector-java升级到最新版本就解决了问题.
<!-- 替换前 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<!-- 替换后 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
二、The server time zone value ‘�й���ʱ��’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to
原因是因为使用了Mysql Connector/J 6.x以上的版本,然后就报了时区的错误
遇到的问题 servertime=UTC导致时间差8个小时(MySQL jdbc 6.0 版本以上必须配置此参数)。
解决办法,在配置url的时候不能简单写成 :
jdbc:mysql://localhost:3306/数据库名
而是要写成 :
jdbc:mysql://localhost:3306/数据库名?serverTimezone=UTC
而UTC代表的是全球标准时间 ,但是我们使用的时间是北京时区也就是东八区,领先UTC八个小时。
UTC + (+0800) = 本地(北京)时间
解决方案,url的时区使用中国标准时间。所以写成 :
jdbc:mysql://localhost:3306/数据库名?serverTimezone=Asia/Shanghai
三、validateConnection false
出现这个错误因为数据库连接池的包版本有问题,将数据库连接池升级,成功解决
<!-- 替换前 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.15</version>
</dependency>
<!-- 替换后 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
四、如果项目使用的是maven私服
当项目是使用maven私服,而且私服里面也没有那些jar,解决办法:
<repositories>
<!-- 代码库 -->
<repository>
<id>alimaven</id>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</repository>
</repositories>
五、总结
升级过程中可能遇到很多坑,我这里只列举了项目遇到的,还有一些服务器遇到的坑我就不一一列举了,希望能帮助到各位。