zoukankan      html  css  js  c++  java
  • MySQL报错:com.mysql.cj.jdbc.util.TimeUtil.loadTimeZoneMappings(TimeUtil.java:163)

    问题:

    MySQL数据库5.6版本,JDBC驱动包mysql-connector-java-5.1.49-bin版本,启动Tomcat,连接数据库时,报错,详细信息:

    java.lang.NullPointerException
        java.util.Properties$LineReader.readLine(Properties.java:434)
        java.util.Properties.load0(Properties.java:353)
        java.util.Properties.load(Properties.java:341)
        com.mysql.cj.jdbc.util.TimeUtil.loadTimeZoneMappings(TimeUtil.java:163)
        com.mysql.cj.jdbc.util.TimeUtil.getCanonicalTimezone(TimeUtil.java:109)
        com.mysql.cj.mysqla.MysqlaSession.configureTimezone(MysqlaSession.java:308)
        com.mysql.cj.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:2474)
        com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:1817)
        com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:1673)
        com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:656)
        com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:349)
        com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:221)

    经过查询,说抛出异常是因为MySql服务器时区(继承自系统时区)的格式与mysql连接器所期望的格式不同。

    解决方法:

    将JDBC的URL加入serverTimezone,比如:

    jdbc.url=jdbc:mysql://localhost:3306/xuejia?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8

    serverTimezone=UTC,其中UTC是统一标准世界时间;中国在东八区,需要指定为中国时区的话,可以将配置修改为serverTimezone=GMT%2B8

    关于时区:

    UTC,即协调世界时。UTC是以原子时秒长为基础,在时刻上尽量接近于GMT的一种时间计量系统。为确保UTC与GMT相差不会超过0.9秒,在有需要的情况下会在UTC内加上正或负闰秒。UTC现在作为世界标准时间使用。
    GMT:即格林尼治标准时间,也就是世界时。GMT的正午是指当太阳横穿格林尼治子午线(本初子午线)时的时间。但由于地球自转不均匀不规则,导致GMT不精确,现在已经不再作为世界标准时间使用。
    UTC与GMT基本上等同,误差不超过0.9秒。

    本文参考:https://blog.csdn.net/wangzhihao1994/article/details/100112870

  • 相关阅读:
    Java框架之Mybatis(一)
    Java框架之Hibernate(四)
    Java框架之Hibernate(三)
    递归与分治
    散列
    绪论
    系统的分类(二)
    系统的定义与分类(一)
    Guess My Number 游戏
    2.5 随机数的生成
  • 原文地址:https://www.cnblogs.com/nayitian/p/15380307.html
Copyright © 2011-2022 走看看