Spring Boot连接数据库,从MySql5.13飞跃到MySql8.0.18的坑

Posted 清酒一杯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot连接数据库,从MySql5.13飞跃到MySql8.0.18的坑相关的知识,希望对你有一定的参考价值。

Spring Boot连接数据库,从mysql5.13飞跃到MySql8.0.18的坑

1.驱动名

驱动包用的是:mysql-connector-java-8.0.18.jar

驱动名从之前的:com.mysql.jdbc.Driver

改为:com.mysql.cj.jdbc.Driver


2.时区问题

昨天用MyBatis逆行工程的时候,出现了以下错误:

?

The server time zone value ‘?D1ú±ê×?ê±??’ 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 utilize time zone support.

谷歌翻译为:

?

服务器时区值“?D1ú±ê×?ê±??”无法识别或代表多个时区。如果要利用时区支持,则必须配置服务器或JDBC驱动程序(通过serverTimezone配置属性)以使用更特定的时区值。

解决:

方法一、在Spring Boot配置文件application.properties连接数据库 url后面拼接:serverTimezone=UTC

spring.datasource.url=jdbc:mysql://localhost:3306/perimetershop?serverTimezone=UTC

发现这样还是不行,还是时区问题,想到会不会是逆行工程连接数据库的url没有添加这个的缘故,我就在逆行工程的xml里面jdbc连接的url后面也添加了serverTimezone=UTC,果然,不报错了。

方法二、在mysql解压文件中,my.ini文件里,**[mysqld]里面加上default-time-zone=’+8:00’**即可,这样url后面就可以不用每次都需要拼接 serverTimezone=UTC。

?

小扩展:UTC:协调世界时,又称世界同一时间,UTC和格林尼治时间是一样的, 北京处于东八区,领先UTC8个小时。

3.逆行工程多生成不需要的文件

使用MyBatis的逆行工程的时候,会多生成一个XXXWithBLOBs.java 的文件,这个文件,我们并不需要(如下图)。这个文件继承了原有的bean文件。 技术图片

这个文件是什么呢?这个文件里面会包含数据库大字段,例如:text,blob,clob等。

原因是因为MySql字段中有text类型的,网上的解决方法是:

<table domainObjectName="User" tableName="test_user">  
    <columnOverride column="address" javaType="java.lang.String" jdbcType="VARCHAR" />  
</table> 

在table标签里声明一个大字段的行

?

<columnOverride column="address" javaType="java.lang.String" jdbcType="VARCHAR" />

我照网上做了,但是并没有解决我的问题,而且我的数据库表中,并没有text类型的字段。

网友的力量还是挺强大的,在翻阅好几篇博文之后,终于找到了解决方法

解决方法:

  <jdbcConnection
       driverClass="com.mysql.jdbc.Driver"
       connectionURL="jdbc:mysql://localhost:3306/perimetershop?serverTimezone=UTC"
       userId="root"
       password="root">
        <property name="nullCatalogMeansCurrent" value="true" />
  </jdbcConnection>

在逆向工程jdbc连接标签内,添加

?

<property name="nullCatalogMeansCurrent" value="true" />

看了一下Mybatis的Generator帮助文档,里面有给出答案:

技术图片
Generator

网址:http://mybatis.org/generator/usage/mysql.html

以上是关于Spring Boot连接数据库,从MySql5.13飞跃到MySql8.0.18的坑的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 1.5集成Druid

Spring Boot 1.5集成Druid

无法从 Spring Boot 应用程序连接不间断 SQL

从 Spring Boot 应用程序连接数据库时出现 org.postgresql.util.PSQLException

Spring Boot BigQuery 数据源连接

Spring Boot:Spring Boot整合Druid