首页 > 数据库技术 > 详细

SpringBoot mysql出现The server time zone value '?й???????' is unrecogni

时间:2019-11-19 22:36:40      阅读:110      评论:0      收藏:0      [点我收藏+]

MySql :8.0.18

引入的mysql驱动:

 技术分享图片

 

 

 

SpringBoot整合Mybatis的框架,在访问Controller的时候 :

ava.sql.SQLException: 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.

at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[mysql-connector-java-8.0.18.jar:8.0.18]

at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.18.jar:8.0.18]

at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89) ~[mysql-connector-java-8.0.18.jar:8.0.18]

at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63) ~[mysql-connector-java-8.0.18.jar:8.0.18]

......

 

 

上网查找解决方案,发现是我的配置文件application.yml中数据库url地址的问题。

server:

  port: 8080

spring:

  datasource:

    url: jdbc:mysql://localhost:3306/heima29

    username: root

    password: houchen

    hikari:

      maximum-pool-size: 20

      minimum-idle: 10

mybatis:

  type-aliases-package: cn.itcast.userservice.pojo

 

查询到的解决方案如下:(猜测估计是因为SpringBoot 2.1.x版本使用的的jdbc驱动是6.0版本以上吧)

原因是因为使用了Mysql Connector/J 6.x以上的版本,然后就报了时区的错误

遇到的问题: servertime=UTC导致时间差8个小时

 

MySQL jdbc 6.0 版本以上必须配置此参数

解决办法: 

在配置url的时候不能简单写成 :jdbc:mysql://localhost:3306/mysql

而是要写成 :jdbc:mysql://localhost:3306/mysql?serverTimezone=UTC

server:

  port: 8080

spring:

  datasource:

    url: jdbc:mysql://localhost:3306/heima29?serverTimezone=?serverTimezone=UTC

    username: root

    password: houchen

    hikari:

      maximum-pool-size: 20

      minimum-idle: 10

mybatis:

  type-aliases-package: cn.itcast.userservice.pojo

 

虽然上面加上时区程序不出错了,但是我们在用java代码插入到数据库时间的时候却出现了问题。

比如在java代码里面插入的时间为:2017-08-21 17:29:56

但是在数据库里面显示的时间却为:2017-08-21 09:29:56

因为时区设置的问题。

UTC代表的是全球标准时间 ,但是我们使用的时间是北京时区也就是东八区,领先UTC八个小时。

UTC + (+0800) = 本地(北京)时间

 

解决方案:

server:

  port: 8080

spring:

  datasource:

    url: jdbc:mysql://localhost:3306/heima29?serverTimezone=Asia/Shanghai

    username: root

    password: houchen

    hikari:

      maximum-pool-size: 20

      minimum-idle: 10

mybatis:

  type-aliases-package: cn.itcast.userservice.pojo

 

 

SpringBoot     mysql出现The server time zone value ‘?й???????‘ is unrecogni

SpringBoot mysql出现The server time zone value '?й???????' is unrecogni

原文:https://www.cnblogs.com/houchen/p/11892629.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!