Eclipse中使用Hibernate连接MySQL报错无法从底层数据库获取连接
Hibernate+C3P0连接MySQL报错排查方案
该报错核心为C3P0连接池无法从MySQL获取有效的可用连接,结合你提供的配置信息,排查方案如下:
配置文件直接修复项(从hibernate.cfg.xml中识别到的错误)
- JDBC URL格式错误
你当前配置的URL为jdbc:mysql://localhost:3306/Test?useSSL=false;,末尾多余的;属于非法字符会导致URL解析失败,且你使用的com.mysql.cj.jdbc.Driver是MySQL 8.0+版本的驱动,必须指定时区参数,修改为:jdbc:mysql://localhost:3306/Test?useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai - 方言与驱动版本不匹配
旧版org.hibernate.dialect.MySQLDialect不兼容MySQL 8.0+版本,替换为对应版本的方言:org.hibernate.dialect.MySQL8Dialect - 密码校验
确认配置项hibernate.connection.password的****已经替换为你本地MySQL root用户的真实密码,密码如果包含特殊字符需要做转义处理。
其他通用排查项
- 确认MySQL服务正常运行:本地终端执行
mysql -u root -p,输入密码后可正常登录即证明服务正常,同时确认3306端口未被其他应用占用。 - 确认目标库已创建:Hibernate的
hbm2ddl.auto配置仅会自动创建表,不会创建数据库,需要提前在MySQL中手动创建名称为Test的数据库。 - 确认用户权限:登录MySQL后执行
grant all privileges on Test.* to 'root'@'localhost'; flush privileges;,确保root用户对Test库有操作权限。 - 确认依赖包无冲突:项目中已导入对应版本的MySQL驱动jar包、Hibernate-c3p0适配包,不存在多版本依赖冲突问题。
快速调试方法
如果修改后仍报错,可以先临时注释掉所有c3p0相关配置,使用Hibernate默认的连接策略测试是否能连通,快速定位是否为c3p0配置本身的问题。
内容的提问来源于stack exchange,提问作者Fattaneh Talebi
相关产品推荐
相关产品推荐

