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 ‘Öйú±ê׼ʱ¼ä’ 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.
“
谷歌翻译为:
服务器时区值”Öйú±ê׼ʱ¼ä”无法识别或代表多个时区。如果要利用时区支持,则必须配置服务器或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">
</columnoverride></table>
在table标签里声明一个大字段的行
<columnoverride column="address" javatype="java.lang.String" jdbctype="VARCHAR"></columnoverride>
“
我照网上做了,但是并没有解决我的问题,而且我的数据库表中,并没有text类型的字段。
网友的力量还是挺强大的,在翻阅好几篇博文之后,终于找到了解决方法
解决方法:
<span class="hljs-tag"><<span class="hljs-name">jdbcConnection</span>
<span class="hljs-attr">driverClass</span>=<span class="hljs-string">"com.mysql.jdbc.Driver"</span>
<span class="hljs-attr">connectionURL</span>=<span class="hljs-string">"jdbc:mysql://localhost:3306/perimetershop?serverTimezone=UTC"</span>
<span class="hljs-attr">userId</span>=<span class="hljs-string">"root"</span>
<span class="hljs-attr">password</span>=<span class="hljs-string">"root"</span>></span>
<span class="hljs-tag"><<span class="hljs-name">property</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"nullCatalogMeansCurrent"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"true"</span> /></span>
<span class="hljs-tag">jdbcConnection</span>>
在逆向工程jdbc连接标签内,添加
<property name="nullCatalogMeansCurrent" value="true"></property>
“
看了一下Mybatis的Generator帮助文档,里面有给出答案:
网址:http://mybatis.org/generator/usage/mysql.html
Original: https://www.cnblogs.com/zdh052286/p/12175265.html
Author: 清酒一杯
Title: Spring Boot连接数据库,从MySql5.13飞跃到MySql8.0.18的坑
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/581603/
转载文章受原作者版权保护。转载请注明原作者出处!