关于pom中mysql-connector-java的jar包引入高版本报错的解决过程

当在SSM项目中使用mysql-connector-java 8.0.12及更高版本并配合c3p0数据源时,会出现加载Driver类的警告和无法获取JDBC连接的错误。解决方法是将mysql-connector-java版本降至5.1.38,同时保持jdbc.properties中的jdbc.driver为com.mysql.jdbc.Driver,这样问题即可解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果你是类似下面的2点配置

1.jdbc.properties文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/o2o?characterEncoding=utf8
jdbc.username=root
jdbc.password=****

 

2.POM文件
<!-- mysql数据库连接包-->
<!--这个jar包版本如果是8.0.12,则会报错-->
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.12</version>
</dependency>

<!-- 数据源c3p0 -->
<!-- https://mvnrepository.com/artifact/com.mchange/c3p0 -->
<dependency>
  <groupId>com.mchange</groupId>
  <artifactId>c3p0</artifactId>
  <version>0.9.5.2</version>
</dependency>

 

看到如下红色字体错误:

Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

你会去将jdbc.driver=com.mysql.jdbc.Driver改成jdbc.driver=com.mysql.jdbc.cj.Driver

结果又会报如下红色字体错误

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Connections could not be acquired from the underlying database!
### The error may exist in file [D:\SSM_maven\o2o\target\classes\mapper\AreaDao.xml]
### The error may involve com.imooc.o2o.dao.AreaDao.queryArea
### The error occurred while executing a query
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Connections could not be acquired from the underlying database!

 

我当初就是遇到了这样的问题,查了很多的方法,都没能解决,但最后还是死马当活马医,做了如下改动,就解决了问题,还一脸懵逼,怎么会是这个原因呀!

解决方法很简单,如下:

1.降低 mysql-connector-java的jar包版本,比如降为如下

<artifactId>mysql-connector-java</artifactId>
  <version>5.1.38</version>

运行后再报如下错误

 WARN com.mchange.v2.c3p0.DriverManagerDataSource - Could not load driverClass com.mysql.jdbc.cj.Driver
java.lang.ClassNotFoundException: com.mysql.jdbc.cj.Driver

 

2.根据上面错误提示,很容易想到修改jdbc.properties,其实也就是还原最初的样子,如下

jdbc.driver=com.mysql.jdbc.Driver

3.再运行,OK

 

最后,总结如下:

<!-- mysql数据库连接包-->
<!--这个jar包版本如果是6.x.x及以上,则会报错,所以改成5.x.x-->
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.38</version>
</dependency>

<!-- 数据源c3p0 -->
<!-- https://mvnrepository.com/artifact/com.mchange/c3p0 -->
<dependency>
  <groupId>com.mchange</groupId>
  <artifactId>c3p0</artifactId>
  <version>0.9.5.2</version>
</dependency>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值