• SpringBoot mysql出现The server time zone value '�й���׼ʱ��' is unrecogni


    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

  • 相关阅读:
    jsp完成页面自动刷新
    ssm整合案例
    MySql 里的IFNULL、NULLIF和ISNULL用法
    数据库优化
    数据库读写并发控制
    solr入门
    AngularJS入门(一)
    jsp和html的的区别
    Docker 网络(十一)
    Docker 容器资源隔离 namespace(十)
  • 原文地址:https://www.cnblogs.com/houchen/p/11892629.html
Copyright © 2020-2023  润新知