解决无法获取数据库连接 java.sql.SQLException: Connections could not be acquired from the underlying database

在跑ssm项目时,出现报错,

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!

如图所示:

解决无法获取数据库连接 java.sql.SQLException: Connections could not be acquired from the underlying database_第1张图片

数据库是mysql 连接池用的c3p0 0.9.1.2

在网上搜索的解决方法,基本都是如下六条:参考文章https://www.iteye.com/blog/jyao-1915561

1,驱动配置有误:driver=com.mysql.jdbc.Driver
2,数据库连接地址有误:url=jdbc:mysql://localhost:3306/test?3useUnicode=true&characterEncoding=utf8
3,密码或帐号有误:username=root
      password=root

4,数据库未启动或无权访问

5,项目未引入对应的驱动jar包mysql-connector-java-5.1.6-bin.jar

6,mysql root没有远程访问的权限,需要增加权限,增加权限的步骤如下:
进入mysql数据库:
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges;

但是按照上述方法,仍旧无法解决,最后发现是由于连接的数据库版本是8.0.16 ,之前maven中的mysql-connector-jar是5.1.6版本的,需要调整为8.0.11,同时在spring对数据库连接池的配置出将driverClass从com.mysql.jdbc.Driver改为com.mysql.cj.jdbc.Driver 如图所示:

同时jdbc url如下:

jdbc:mysql://localhost:3306/ssm?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true&characterEncoding=utf-8

com.mysql.cj.jdbc.Driver是mysql-connector-java6中的,而com.mysql.jdbc.Driver是mysql-connector-java5中的

在使用com.mysql.cj.jdbc.Driver一定要指定时区 serverTimezone=UTC 不然还是会报错,具体可查看这篇文章:https://blog.csdn.net/superdangbo/article/details/78732700

你可能感兴趣的:(数据库连接,ssm)