zoukankan      html  css  js  c++  java
  • 【Java】JDBC中The server time zone value '???ú±ê×??±??' is ............. 的错误

    参考文章:https://blog.csdn.net/weixin_37577564/article/details/80329775

    在JDBC使用的时候有时候会出现java.sql.SQLException: The server time zone value '???ú±ê×??±??' is unrecognized or represents........的错误,具体错误如下:

    Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
    java.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:127)
    	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95)
    	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:87)
    	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:61)
    	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:71)
    	at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:76)
     
     
    	at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:862)
    	at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:444)
    	at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:230)
     
     
    	at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:226)
    	at java.sql.DriverManager.getConnection(Unknown Source)
    	at java.sql.DriverManager.getConnection(Unknown Source)
    	at zhu.jdbc.unit.UnitMysql.getConnection(UnitMysql.java:34)
    	at zhu.jdbc.dao.imp.ITb_UserImpI.insertData(ITb_UserImpI.java:55)
    	at zhu.jdbc.dao.imp.ITb_UserImpI.insertData(ITb_UserImpI.java:1)
    	at zhu.jdbc.service.imp.ITb_UserServiceImpI.insertData(ITb_UserServiceImpI.java:35)
    	at zhu.jdbc.service.imp.ITb_UserServiceImpI.insertData(ITb_UserServiceImpI.java:1)
    	at zhu.jdbc.servlet.Servlet_TbUser.Insert(Servlet_TbUser.java:87)
    	at zhu.jdbc.servlet.Servlet_TbUser.doPost(Servlet_TbUser.java:41)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
    	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
    	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
    	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)
     
     
    	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
    	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    	at java.lang.Thread.run(Unknown Source)
    Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: 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 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    	at java.lang.reflect.Constructor.newInstance(Unknown Source)
    	at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:59)
    	at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:83)
    	at com.mysql.cj.util.TimeUtil.getCanonicalTimezone(TimeUtil.java:128)
    	at com.mysql.cj.protocol.a.NativeProtocol.configureTimezone(NativeProtocol.java:2201)
    	at com.mysql.cj.protocol.a.NativeProtocol.initServerSession(NativeProtocol.java:2225)
    	at com.mysql.cj.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:1391)
    	at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:993)
    	at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:852)
    	... 36 more
    五月 15, 2018 9:38:04 下午 org.apache.catalina.core.StandardWrapperValve invoke
    严重: Servlet.service() for servlet [Servlet_TbUser] in context with path [/myweb2] threw exception
    java.lang.NullPointerException
    	at zhu.jdbc.dao.imp.ITb_UserImpI.insertData(ITb_UserImpI.java:59)
    	at zhu.jdbc.dao.imp.ITb_UserImpI.insertData(ITb_UserImpI.java:1)
    	at zhu.jdbc.service.imp.ITb_UserServiceImpI.insertData(ITb_UserServiceImpI.java:35)
    	at zhu.jdbc.service.imp.ITb_UserServiceImpI.insertData(ITb_UserServiceImpI.java:1)
    	at zhu.jdbc.servlet.Servlet_TbUser.Insert(Servlet_TbUser.java:87)
    	at zhu.jdbc.servlet.Servlet_TbUser.doPost(Servlet_TbUser.java:41)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
    	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
    	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
    	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)
    	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
    	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
     
    	at java.lang.Thread.run(Unknown Source)

    解决办法

    这里其实报告了一个警告和一个错误。

    第一行的警告是因为我们一直用的驱动类 com.mysql.jdbc.Driver 已经过时了,虽然还能用,但是会报警告信息。警告信息中也已经告诉了我们新的驱动类,如下:

    com.mysql.cj.jdbc.Driver

    这样这里就不会报警告了。

    剩下的就是错误信息了,就是下面很长很长的,看着很唬人

    出现这个的原因是因为 mysql返回的时间总是有问题,比实际时间要早8小时。

    //将连接mysql的url后加上serverTimezone=GMT%2B8,表示使用东八区时间
    public static final String URL="jdbc:mysql://localhost:3306/jdbc01?characterEncoding=utf8&serverTimezone=GMT%2B8";

    在JDBC连接的url后面加上serverTimezone=GMT即可解决问题,如果需要使用GMT+8时区,需要写成GMT%2B8。

    问题解决!

  • 相关阅读:
    二级目录下的SESSION共享问题
    [Leetcode 65] 120 Triangle
    JMeter学习(一)工具简单介绍
    pycham破解方法——Mac上亲测成功
    jmeter目前发现一丢丢强大的功能(未完待续,需优化)
    jmeter实现请求返回参数利用到下一个请求中
    通用化case,拿走不谢——测试之路
    mac 下pip安装python三方库的时候提示 Could not fetch URL https://pypi.python.org/simple/virtualenv/: There was a problem confirming the ssl certificate:......
    sudo pip install MySQLdb找不到该资源的原因
    软件质量管理实践总结
  • 原文地址:https://www.cnblogs.com/ME-WE/p/12433591.html
Copyright © 2011-2022 走看看