【踩坑记录】SpringBoot 项目报 Communications link failure 的解决方法
遇到的问题:
在做项目的时候,启动后台服务时突然遇到一个熟悉又陌生的报错
Create connection SQLException, url: jdbc:mysql://127.0.0.1:3306/ft_crm?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&serverTimezone=Asia/Shanghai&useAffectedRows=true
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
错误信息的关键是这一句:
The driver has not received any packets from the server.
意思就是:JDBC 驱动在尝试建立连接时,根本没有收到 MySQL 的任何响应
如下图所示:
常见原因分析
在排查这类 Communications link failure
时,通常有几个方向:
MySQL 服务没启动
最常见的问题,数据库服务没有运行,客户端当然连不上。端口错误
默认端口是3306
,如果改过,需要在jdbc:mysql://ip:port/dbname
里写对端口。账号密码错误
用户名或密码配置不对,连接会被直接拒绝。网络 / 防火墙限制
如果是跨服务器访问,要注意防火墙、MySQL 用户权限是否允许远程连接。配置文件问题
例如 MySQL 的bind-address
只绑定在localhost
,导致外部无法访问。
我的解决过程
一开始我还以为是端口或者配置写错了,但仔细一看端口和账号都没问题。于是去 Windows 服务 里一查,发现 —— MySQL 服务停止了重新启动一下就好了。
解决办法很简单:
打开服务管理器(Win + R 输入
services.msc
)找到 MySQL 服务
点击 启动 / 重新启动
然后再启动项目,数据库连接恢复正常。
总结
这次的问题其实很常见:
Spring Boot 项目启动时报 Communications link failure
90% 情况下就是 MySQL 服务没启动
其他情况再逐步排查端口、账号、权限
所以以后遇到类似问题,第一步先确认数据库服务是不是在运行,这样能省去很多无用排查。