• 连接数据库:ERROR: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 prop


    本打算在maven项目中配置mybatis试试看,想到mybatis如果不是在容器中运行,那么他的事务控制实际上可以使用的是jdbc的提交和回滚,这就要在pom.xml文件中配置mysql-connector-java了,找到一个网站https://mvnrepository.com/,里面可以索引maven中心仓库,搜索mysql-connector-java

    我选择了6.0.6进行配置

    这下就出问题了,运行了一个jdbc程序,就出现标题所提到的问题了,是因为数据库驱动版本太高了,数据库和系统时区的差异所造成的,解决办法有两个:

    一、换成低版本的驱动,比如5.1.43版本的

    二、在mysql中执行命令

    set global time_zone='+8:00'

    或者在数据库驱动的url后加上serverTimezone=UTC参数(时区参数)

    如果serverTimezone是第一个参数(?后面就是),则

    jdbc:mysql://localhost/tradeonline?serverTimezone=GMT

    如果serverTimezone不是第一个参数,则

    jdbc:mysql://localhost/tradeonline?characterEncoding&serverTimezone=GMT

    但是这样写会报错的The reference to entity “serverTimezone” must end with the ‘;’ delimiter. (对"serverTimezone"的引用必须以';'分隔符结尾)的错误提示,将代码改为:

    jdbc:mysql://localhost/tradeonline?characterEncoding&serverTimezone=GMT

    因为在XML配置时,要用&代替。另外,如果需要使用gmt+8时区,需要写成GMT%2B8,否则会被解析为空。(PS:数据库驱动JDBC新版本的名字改成了com.mysql.cj.jdbc.Driver)

  • 相关阅读:
    集合框架整理及之间的区别
    ArrayList和LinkedList
    GC(Garbage Collection)
    Java常用工具类
    Java异常处理
    JDK环境配置
    内部类总结
    Java字符串定义及常用方法
    Java面向对象总结
    Java数组定义及方法
  • 原文地址:https://www.cnblogs.com/baotong-9396/p/8012265.html
Copyright © 2020-2023  润新知