spring jdbc连接池异常
这几天在写项目的时候遇到了一些问题,在这里记录一下。我们写项目用的是mysql项目开始的时候我是在本地创建了一个库就开始写,过了几天之后在华为云上买了一个云数据库,我就把我本地的库访问地址改成新的云库。然后启动项目报错连接不上库,我就吓一跳然后就去搜查,后来发现是jdbc的驱动版本太低了。
原本使用的jdbc的驱动是mysql5的,使用的方式是这样的,如下:
// An highlighted block
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://${maven.jdbc.host}:${maven.jdbc.port}/${maven.jdbc.db}?useUnicode=true&characterEncoding=UTF-8
jdbc.username=${maven.jdbc.username}
jdbc.password=${maven.jdbc.password}
jdbc.max_total=100
jdbc.max_idle=10
这里使用的是com.mysql.jdbc.Driver,当这种情况去访问华为云的数据库我这里提示访问不到,需要改变一下
将jdbc.driver=com.mysql.jdbc.Driver
更改为 jdbc.driver=com.mysql.cj.jdbc.Driver
如下:
// An highlighted block
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://${maven.jdbc.host}:${maven.jdbc.port}/${maven.jdbc.db}?useUnicode=true&characterEncoding=UTF-8
jdbc.username=${maven.jdbc.username}
jdbc.password=${maven.jdbc.password}
jdbc.max_total=100
jdbc.max_idle=10
但是我这样改完之后再次启动他会报我mysql-connector-java
jar包的错,版本不匹配。因为jdbc.driver=com.mysql.jdbc.Driver
是mysql5的写法,现在我给改成 jdbc.driver=com.mysql.cj.jdbc.Driver
的样子了,这样的写法是mysql6的,所以就会有问题,需要提高版本,我原来用的mysql-connector-java
的版本是5.1.35的 如下:
// An highlighted block
<!-- MySQL -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
<scope>runtime</scope>
</dependency>
后台我给改成8.0.15的版本了就可以了,如下:
// An highlighted block
<!-- MySQL -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
<scope>runtime</scope>
</dependency>
改成这样之后我的项目就可以正常访问数据了
另外如果将mysql-connector-java
的版本提高到了6以上,但是你的jdbc访问驱动还是jdbc.driver=com.mysql.jdbc.Driver
的话就会出现异常,如下类似这样的异常信息:
// An highlighted block
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.
此时需要把com.mysql.jdbc.Driver
改为com.mysql.cj.jdbc.Driver
即可.
如果有疑问的话可以在下面评论我会经常看的