com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException 异常解决

环境
JDK1.8

Mysql 8.0.20

<!-- mysql依赖 -->
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>5.1.35</version>
</dependency>

db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/ssm?characterEncoding=utf-8
报错信息
org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
### The error may exist in phase01/UserMapper.xml
### The error may involve test.findUserById
### The error occurred while executing a query
### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
	at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:150)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:77)
	... 55 more
解决办法

原因是从JDBC6.0开始驱动类使用了新的,并且url中必须要设置时区,否侧会报错。
应该用新的驱动类是com.mysql.cj.jdbc.Driver,而不是com.mysql.jdbc.Driver,并且还要配置时区。

使用新的Mysql驱动jar包,将依赖替换为更高版本,例如8.0.15

<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>8.0.15</version>
</dependency>

修改驱动的类名,并且在url后面加上时区设置,UTC表示标准时区。

db.driver=com.mysql.jc.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/ssm?characterEncoding=utf-8&serverTimezone=UTC

猜你喜欢

转载自blog.csdn.net/chenlixiao007/article/details/106158808