问题:
连接mysql数据库报错Connections could not be acquired from the underlying database!
解决流程:
1.检查Hibernate.cfg.xml配置文件中的驱动、URL、用户名和密码都没有问题
2.检查驱动,没问题
3.做sql连接测试,连接成功
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class sqlTest {
private static String url = "jdbc:mysql://localhost:端口号/数据库名";//数据库服务地址
private static String driver = "com.mysql.jdbc.Driver";//驱动路径
private static String username = "root";
private static String password = "密码";
private static String sql = "insert into test values(?,?)";//数据库操作语句
public static void main(String[] args) throws Exception {
try {
Class.forName(driver);//注册
Connection con = DriverManager.getConnection(url, username, password);//连接
PreparedStatement t1 = con.prepareStatement(sql);//用来执行SQL语句查询,对sql语句进行预编译处理
t1.setString(1, "rfrfffrff");
t1.setInt(2, 1nsuu);
t1.executeUpdate();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
4.仔细查看报错:发现有这么一句
Caused by: com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source.
资源池无法从其主工厂或源获取资源,测试连接数据库成功
说明有可能是资源池的问题,参考这位博主的做法,因此更换资源池jar包,失败。
5.最后发现项目文件夹上显示有红色感叹号,才发现是环境配置的问题(这个项目是直接导入的写好的代码),jre版本不兼容
解决方案:
点击文件右键-->构建路径-->配置构建路径-->库-->可以看到JRE系统库这里是有红色感叹号的,点击-->编辑-->勾选默认JRE-->应用,即可
每次测试程序都会提示我程序有错误,但我看了一下代码,没有发现是代码有问题,也就没有在意,但没想到是JRE的问题。