報錯信息: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.)
問題來源mysql-connecter-java 版本過低 如果你mysql的版本是mysql 8.0+ 而你的mysql-connecter-java 為5.x.x的時候就會報錯這個錯誤 所以如果你是maven環境 更換如下版本 還要更換數據庫連接配置
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.11</version> </dependency>
數據庫連接配置更新
driverClassName 配置 com.mysql.jdbc.Driver 替換為 com.mysql.cj.jdbc.Driver
url 配置 增加為 ?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&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=
拓展
在上面配置:
url=jdbc:mysql://localhost:3306/XXXX?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false
中如果
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'
問題來源mysql-connecter-java 版本過低 如果你mysql的版本是mysql 8.0+ 而你的mysql-connecter-java 為6.x.x的就會報錯這個錯誤 所以如果你是maven環境 更換如下版本就好了
如果錯誤依然為解決請參考上面更換數據庫連接配置
<!-- 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。
