java.sql.SQLException: The server time zone value '???ú±ê×??±??' is unrecognized or represents more


最近很多次遇到 The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone這個問題, 
報錯為:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Connections could not be acquired from the underlying database! ### The error may exist in com/wj/mapper/UserLoginMapper.xml ### The error may involve com.wj.mapper.UserLoginMapper.selectByName ### The error occurred while executing a query ### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Connections could not be acquired from the underlying database! org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) javax.servlet.http.HttpServlet.service(HttpServlet.java:650) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
root cause

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. com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:127) com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95) com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:87) com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:61) com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:71) com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:76) com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:862) com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:444) com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:230) com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:226) com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175) com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220) com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206) com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203) com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138) com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125) com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44) com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870) com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)

網上的說

法也很多,經過測試,有效的一個辦法如下: 
這里寫圖片描述 
即可解決這個錯誤!

 

 

 

 

 

 

java.sql.SQLException: The server time zone value '???ú±ê×??±??' is unrecognized or represents more

 

1 報錯代碼:

     加載類“com.mysql.jdbc.Driver”。這已被棄用。新的驅動程序類是`com.mysql.cj.jdbc.Driver'。駕駛員通過SPI自動注冊和驅動程序類的

連接數據庫... 
星期六6月2日10時47分02秒CST 2018 WARN:建立無服務器的身份驗證SSL連接不推薦使用。根據MySQL 5.5.45 +,5.6。 26+和5.7.6+的要求,如果未設置顯式選項,則必須默認建立SSL連接。為了符合不使用SSL的現有應用程序,verifyServerCertificate屬性設置為'false'。您需要通過設置useSSL = false顯式禁用SSL,或者設置useSSL = true並為服務器證書驗證提供信任庫。java.sql.SQLException 
:服務器時區值'???ê×?? ?? ??” 無法識別或代表多個時區。如果要利用時區支持,則必須 配置服務器或JDBC驅動程序(通過serverTimezone配置屬性)以使用更具體的時區值。在com.mysql.cj.jdbc.exceptions。 SQLError.createSQLException(SQLError.java:127)在com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95)

2 錯誤截圖

3 工具版本:

     mysql - 5.7.21  

                  JDBC驅動:MySQL的的連接器的Java的8.0.11.jar

4 錯誤分析:

出現這種錯誤一般是JDBC驅動版本的原因

5錯誤1:

     加載類“com.mysql.jdbc.Driver” 。這已被棄用。新的驅動程序類是`com.mysql.cj.jdbc.Driver' 驅動程序通過SPI自動注冊,通常不需要手動加載驅動程序類。

  解決方法:這個問題很簡單按照它的提示把代碼中com.mysql.jdbc.Driver改成com.mysql.cj.jdbc.Driver就可以了

          修改前代碼:

 static final String JDBC_DRIVER =“com.mysql.jdbc.Driver”; 

           修改后代碼:

 static final String JDBC_DRIVER =“com.mysql.cj.jdbc.Driver”; 

 錯誤2:Sat Jun 02 11:40:45 CST 2018 WARN:建議不建立服務器身份驗證的SSL連接。根據MySQL 5.5.45 +,5.6.26 +和5.7.6+的要求,如果未設置顯式選項,則必須默認建立SSL連接。為了符合不使用SSL的現有應用程序,verifyServerCertificate屬性設置為'false'。您需要通過設置useSSL = false顯式禁用SSL,或者設置useSSL = true並且為服務器證書驗證提供信任庫。

 解決方法:

      這是一個警告  ,即在原來的數據庫名稱后面添加:?useUnicode=true&characterEncoding=utf-8&useSSL=false

       修改前代碼: 

 static final String DB_URL =“jdbc:mysql:// localhost:3306 / runoob”;
       修改后代碼:
  1.  
    static final String JDBC_DRIVER =“com.mysql.cj.jdbc.Driver”;
  2.  
    static final String DB_URL =“jdbc:mysql:// localhost:3306 / runoob?useUnicode = true&characterEncoding = utf-8&useSSL = false”;

錯誤3:

    java.sql.SQLException中:服務器時區值'??? EE×??±??' 。無法識別或代表多個時區如果要利用時區支持,則必須配置服務器或JDBC驅動程序(通過serverTimezone配置屬性)以使用更具體的時區值。

   解決方法:

         這是由於數據庫和系統時區差異所造成的,在JDBC連接的URL后面加上serverTimezone = GMT即可解決問題,如果需要使用GMT + 8時區,需要寫成GMT%2B8,否則會被解析為空。再一個解決辦法就是使用低版本的MySQL jdbc驅動,

       修改前代碼:

  1.  
    static final String JDBC_DRIVER =“com.mysql.cj.jdbc.Driver”;
  2.  
    static final String DB_URL =“jdbc:mysql:// localhost:3306 / runoob?useUnicode = true&characterEncoding = utf-8&useSSL = false”;
    修改后代碼:
  1.  
    static final String JDBC_DRIVER =“com.mysql.cj.jdbc.Driver”;
  2.  
    靜態最后弦樂DB_URL =“?JDBC:MySQL的: //本地主機:3306 / runoob了useUnicode =真的characterEncoding = UTF-8&useSSL =假serverTimezone = GMT“;

最后問題解決:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM