使用Hibernate JPA连接MySQL时笔记本出现连接失败异常
排查笔记本上Hibernate连接MySQL失败的问题
相同代码在办公、家用电脑都能正常跑,唯独笔记本出问题,核心原因肯定是笔记本本地环境和另外两台机器存在差异。从你给出的报错日志(JDBCConnectionException: Error calling Driver#connect)来看,问题卡在JDBC连接环节,咱们一步步排查:
1. 先确认笔记本上的MySQL服务是否正常启动
这是最容易忽略的基础问题:
- Windows:按下Win+R输入
services.msc打开「服务」面板,找到MySQL服务,查看状态是否为「正在运行」,未启动的话右键点击启动即可。 - Mac/Linux:终端执行
systemctl status mysql检查状态,若未运行,执行systemctl start mysql启动服务。
2. 检查MySQL端口3306是否被占用或配置错误
你的配置用的是默认3306端口,笔记本可能有其他程序占用了这个端口:
- Windows:终端执行
netstat -ano | findstr :3306,如果输出里有非MySQL的进程ID,说明端口被占用——要么关闭对应进程,要么修改MySQL的my.ini(Windows)或my.cnf(Mac/Linux)里的端口,同时更新persistence.xml的连接URL。 - Mac/Linux:终端执行
lsof -i :3306查看占用进程,处理方式同上。
3. 验证MySQL用户权限与连接可用性
虽然你用的是root@localhost,但笔记本的MySQL可能刚安装,权限配置不全:
- 打开MySQL客户端,登录root用户:
mysql -u root -p - 执行授权命令确保root能访问目标数据库:
GRANT ALL PRIVILEGES ON dbv5.* TO 'root'@'localhost' IDENTIFIED BY 'root'; FLUSH PRIVILEGES;
- 先手动测试连接(比如用命令行
mysql -u root -p dbv5或Navicat工具),确认能正常登录dbv5数据库。
4. 检查JDBC驱动与MySQL版本的兼容性
你的persistence.xml里用的是MySQL57Dialect,说明目标MySQL是5.7版本,但要确认笔记本上的MySQL实际版本:
- 登录MySQL执行
SELECT VERSION();,如果是8.0及以上版本,当前的mysql-connector-java:5.1.39驱动版本太低,需要修改pom.xml:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> <!-- 换成对应8.x稳定版本 --> </dependency>
同时更新persistence.xml的两个关键配置:
<property name="hibernate.connection.driver_class" value="com.mysql.cj.jdbc.Driver"/> <!-- 注意cj包路径 --> <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/dbv5?serverTimezone=UTC"/> <!-- 必须加上时区参数 -->
5. 排查防火墙/杀毒软件的拦截
笔记本的防火墙或杀毒软件可能默认阻止了Java程序访问本地3306端口,试试临时关闭防火墙后再运行程序,如果能正常连接,就给Java程序添加防火墙允许规则。
6. 重新下载Maven依赖排除损坏问题
有时候笔记本本地Maven仓库的依赖可能损坏或未完全下载:
- 删除本地Maven仓库中
mysql和hibernate相关的文件夹(比如~/.m2/repository/mysql、~/.m2/repository/org/hibernate) - 终端执行
mvn clean install,让Maven重新下载所有依赖。
内容的提问来源于stack exchange,提问作者Pweting
相关产品推荐
相关产品推荐

