Could not open JDBC Connection for transaction; nested exception is org.apache.commons.dbcp.SQLNeste

 

報錯信息:Could not open JDBC Connection for transaction; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Could not create connection to database server.)java

問題來源mysql-connecter-java 版本太低 若是你mysql的版本是mysql 8.0+ 而你的mysql-connecter-java 爲5.x.x的時候就會報錯這個錯誤 因此若是你是maven環境 更換以下版本 還要更換數據庫鏈接配置mysql

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.11</version>
</dependency>

數據庫鏈接配置更新sql

driverClassName 配置 com.mysql.jdbc.Driver 替換爲 com.mysql.cj.jdbc.Driver
url 配置 增長爲 ?serverTimezone=UTC&amp;useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false"

效果:數據庫

driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/XXXX?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false
username=root
password=

 拓展apache

在上面配置:服務器

url=jdbc:mysql://localhost:3306/XXXX?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false

中若是maven

serverTimezone配置爲UTC 那麼會比中國早八個小時 若是在中國你能夠配置成ShangHai或者Hongkong 以下面所示
url=jdbc:mysql://localhost:3306/test?serverTimezone=Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false



報錯信息: java.sql.SQLException: Unknown system variable 'query_cache_size'url

問題來源mysql-connecter-java 版本太低 若是你mysql的版本是mysql 8.0+ 而你的mysql-connecter-java 爲6.x.x的就會報錯這個錯誤 因此若是你是maven環境 更換以下版本就行了spa

若是錯誤依然爲解決請參考上面更換數據庫鏈接配置code

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.11</version>
</dependency>

 

一些小提示

不推薦不使用服務器身份驗證來創建SSL鏈接。

若是未明確設置,MySQL 5.5.45+, 5.6.26+ and 5.7.6+版本默認要求創建SSL鏈接。

爲了符合當前不使用SSL鏈接的應用程序,verifyServerCertificate屬性設置爲’false’。

若是你不須要使用SSL鏈接,你須要經過設置useSSL=false來顯式禁用SSL鏈接。

若是你須要用SSL鏈接,就要爲服務器證書驗證提供信任庫,並設置useSSL=true。

相關文章
相關標籤/搜索