com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@4e47db1f – Acquisition Attempt Failed!!!—错误解决办法
我们的征程是星辰大海,而非人间烟尘
错误详情图:
排除过程:
起初我以为是我的database.properties文件错了,我又写一个测试文件去链接数据库,但是结果就莫名其妙的可以,后来我觉得应该不是数据库的连接问题,又把错误放到,我的借口文件mapper.xml文件,我后面将这个接口注释掉发现可以跑起来,导致我一度觉得mapper.xml文件有问题,后来有重新写了一遍,mapper.xml文件,确信mapp
er.xml文件是没有问题的之后我就觉得是数据库的问题,我就写了两个测试方法:
import com.qifei.pojo.Books;
import com.qifei.service.BookService;
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.sql.*;
public class MyTest {
@Test
public void test(){
ApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
BookService bookServiceImpl = classPathXmlApplicationContext.getBean("BookServiceImpl", BookService.class);
for (Books books : bookServiceImpl.queryAllBook()) {
System.out.println(books);
}
}
@Test
public void test2() throws SQLException {
Connection connection = null;
try {
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8","root","111111");
} catch (SQLException e) {
e.printStackTrace();
}
//2) 得到语句对象
Statement statement = connection.createStatement();
//3) 执行 SQL 语句得到结果集 ResultSet 对象
ResultSet rs = statement.executeQuery("select * from books");
//4) 循环遍历取出每一条记录
while(rs.next()) {
int id = rs.getInt("bookID");
String name = rs.getString("bookName");
//5) 输出的控制台上
System.out.println("编号:" + id + ", 书名:" + name );
}
//6) 释放资源
rs.close();
statement.close();
connection.close();
}
}
test()方法运行结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BGt5DdSf-1630313057814)(H:\博客截图\image-20210830163207140.png)]
test2()方法运行结果:
看到两个方法的结果,我确信我的database.properties里面的数据参数文件是没有错了。
然后看到test()结果里面说:
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@270fcd06 -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (2). Last acquisition attempt exception: java.sql.SQLException: Access denied for user 'Admin'@'localhost' (using password: YES)
再看看database.properties
driver=com.mysql.cj.jdbc.Driver url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8 username=root password=111111
终于发现问题所在:
我明明是用root登陆,为什么会报
Access denied for user 'Admin'@'localhost' (using password: YES)
这个错误,就算是要报错也是报Access denied for user 'root'@'localhost' (using password: YES)
不应该是Admin
百度得结果:
**最后把username改成jdbc.username就好了。**应该是username这个变量和系统的某个变量冲突了。
database.properties
jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8 jdbc.username=root jdbc.password=111111
然后解决问题
附:
在maven中spring配置c3p0遇到的问题,其它地方遇到解决思路一致,如下:
1.检查四个参数是否有问题,注意大小写
2.检查数据库是否开启
3.检查是否导入了mysql-connector-jar包
4.检查mysql-connector-jar的jar包版本是否和数据库版本一致
列如我用的数据库的版本是8.0.12,那么对应的mysql-connector-ja的版本应该为8.x.x
用的数据库和jar包版本过高时,需要在URL后面加上
useSSL=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
如果喜欢的欢迎点赞关注。谢谢 ~
本过高时,需要在URL后面加上
useSSL=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
如果喜欢的欢迎点赞关注。谢谢 ~