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

原文地址:https://www.cnblogs.com/zdh052286/p/12175265.html

时间: 2024-08-01 14:24:47

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

曹工说Spring Boot源码(13)-- AspectJ的运行时织入(Load-Time-Weaving),基本内容是讲清楚了(附源码)

写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean Definition到底是什么,咱们对着接口,逐个方法讲解 曹工说Spring Boot源码(3)-- 手动注册Bean Definition不比游戏好玩吗,我们来试一下 曹工说Spring Boot源码(4)-- 我是怎么自定义ApplicationContext,从json文件读取bean de

mysql5.5换成mysql8.0

由于在建表钟发现有些语句就是录不进去,研究发现是因为5.5版本过低导致,就想换到5.7版本,结果一看8.0都出了,据官方说明8.0要比5系列快2倍网上,遂直接换成8.0了,不过这个过程真的心累. 1.卸载 首先把MYSQL文件目录下的mysql5.5中的data文件放到其他地方保存,然后通过360等软件卸载就行了(我之前用的是安装版的),压缩版的写在请点击这里 2.下载 解压缩 到mysql官网 http://dev.mysql.com/downloads/mysql/ 下载mysql 上面的为

spring boot 整合mysql

一.4.21积累的知识点 @Controller标识一个Spring类是Spring MVC controller处理器 @RestController:是@Controller和@ResponseBody的结合体,两个标注合并起来的作用. @Transactional:打了这个注解的类或者方法表示该类里面的所有方法或者这个方法的事务由spring处理,来保证事务的原子性,不知道这样说你能不能理解,即是方法里面对数据库操作,如果失败则spring负责回滚操作,成功提交操作 application

spring boot 学习之路3( 集成mybatis )

下面就简单来说一下spring boot 与mybatiis的整合问题,如果你还没学习spring boot的注解的话,要先去看spring boot的注解 好了,现在让我们来搞一下与mybatis的整合吧,在整合过程中,我会把遇到的问题也说出来,希望可以让大家少走弯路! 首先,是在pom.xml中添加一些依赖 这里用到spring-boot-starter基础和spring-boot-starter-test用来做单元测试验证数据访问 引入连接mysql的必要依赖mysql-connector

Spring Boot(3):加载DataSource过程的源码分析及yml中DataSource的配置

Spring Boot实现了自动加载DataSource及相关配置.当然,使用时加上@EnableAutoConfiguration注解是必须的.下面就是对这一部分的源码分析. (1)Spring Boot启动后会调用org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration.下面是部分源码. 1 @Configuration 2 @ConditionalOnClass({ DataSource.class, E

43. Spring Boot动态数据源(多数据源自动切换)【从零开始学Spring Boot】

[视频&交流平台] àSpringBoot视频 http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=400000000155061&utm_medium=share à SpringCloud视频 http://study.163.com/course/introduction.htm?courseId=1004638001&a

spring boot学习1

转:https://blog.csdn.net/jsyxcjw/article/details/46763639 1 开始 1.1 spring介绍 Spring Boot使开发独立的,产品级别的基于Spring的应用变得非常简单,你只需"just run". 我们为Spring平台及第三方库提供开箱即用的设置,这样你就可以有条不紊地开始.多数Spring Boot应用需要很少的Spring配置. 你可以使用Spring Boot创建Java应用,并使用java -jar启动它或采用传

spring boot连接mysql8.0

今天spring boot的项目数据库从mysql5.7换到mysql8.0,遇到点问题,特此记录下来 查看mysql的版本 mysql> select version();+-----------+| version() |+-----------+| 8.0.12 |+-----------+ 修改mysql的依赖使用MySQL Connector/J <dependency> <groupId>mysql</groupId> <artifactId&g

Spring Boot进阶系列二

这边文章主要实战如何使用Mybatis以及整合Redis缓存,数据第一次读取从数据库,后续的访问则从缓存中读取数据. 1.0 Mybatis MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录. MyBa