You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行doctrine:migrations:migrate报SQLSTATE[HY000][2002]连接被拒的解决方法

报错含义

SQLSTATE[HY000] [2002] Connection refused属于数据库连接阶段的网络层错误,代表执行迁移命令的PHP进程按照配置的127.0.0.1:3306地址发起TCP连接时,目标端口没有可响应的数据库服务,该错误和数据库账号权限、库表结构、迁移脚本逻辑无关,不需要排查SQL或迁移代码本身的问题。

修复步骤

按优先级依次排查即可:

  • 检查数据库服务运行状态
    如果是宿主机直接安装的MariaDB/MySQL:
    • Linux系统执行systemctl status mariadb(部分发行版服务名为mysql)查看服务状态,未启动则执行systemctl start mariadb启动服务
    • Windows系统打开服务管理器,找到MariaDB/MySQL服务,确认状态为「正在运行」,未运行则手动启动
    • Mac系统通过homebrew安装的话执行brew services list查看服务状态,未启动执行brew services start mariadb启动
      如果是Docker部署的数据库:执行docker ps查看数据库容器状态,若容器未在运行列表中,执行docker start 你的数据库容器名启动容器。
  • 核对连接地址与端口配置
    • 如果PHP应用跑在宿主机、数据库跑在Docker容器中:需要确认数据库容器启动时加了-p 3306:3306的端口映射参数,没有端口映射的话宿主机的127.0.0.1:3306无法访问到容器内的数据库
    • 如果PHP应用本身也跑在Docker容器中:不能用127.0.0.1作为数据库地址,容器内的127.0.0.1指向容器自身,需要换成数据库容器在Docker网络内的服务名/容器名作为连接地址
    • 如果你的数据库修改过默认监听端口,需要把DATABASE_URL中端口段的3306替换为实际监听端口
  • 验证端口连通性
    完成前两步检查后,在执行php命令的环境下执行telnet 127.0.0.1 3306测试端口连通性,连通成功会返回数据库版本相关的字符,连通失败会直接提示连接拒绝,回到前序步骤重新排查服务状态和网络配置即可。
  • 校验连接账号与库信息
    端口连通后,确认DATABASE_URL中配置的root账号密码(当前配置为空密码)和实际数据库密码一致,且数据库中已经提前创建了db_docker这个目标库,不存在的话手动创建后再执行迁移命令。

内容的提问来源于stack exchange,提问作者Farronilucas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 15:24:34