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

Laravel 8执行php artisan migrate报错2002问题排查求助

问题原因定位与解决方法

第一个报错(DB_HOST=mysql时getaddrinfo失败)

这个错误的本质是本地网络无法解析mysql这个主机名:

mysql作为主机名仅在Docker等容器编排环境下生效:只有当你执行php artisan migrate的环境和MySQL服务处于同一个Docker网络、且MySQL服务的命名为mysql时,这个主机名才能被正常解析。如果是本地直接运行Laravel、或者没有在对应容器内执行命令,就会出现解析失败的报错。

第二个报错(DB_HOST=localhost时No such file or directory)

这个错误是PHP找不到MySQL的Unix套接字文件导致的:

当主机名填localhost时,PHP默认会通过Unix套接字连接MySQL,不会走TCP网络。如果你的PHP配置里预设的套接字路径和实际MySQL运行的套接字路径不一致,就会触发这个报错。


对应解决方案

如果你使用Docker环境运行项目

  • 不要在本地主机直接执行迁移命令,需要先进入Laravel对应的PHP服务容器内部再执行,示例命令:docker exec -it <你的PHP容器名称> bash
  • 确认Docker编排配置(如docker-compose.yml)中的MySQL服务名称和DB_HOST的值一致,不要随意修改服务名

如果你使用本地原生环境运行项目

  • 优先将DB_HOST修改为127.0.0.1,强制PHP走TCP协议连接MySQL,大部分场景下修改后即可正常运行
  • 若修改后仍报错,按顺序检查以下配置:
    • 确认本地MySQL服务已经正常启动,监听端口为3306
    • 确认.env文件中的DB_DATABASE、DB_USERNAME、DB_PASSWORD和你本地MySQL的配置完全匹配
    • 若确实需要使用localhost连接,可执行mysql_config --socket获取实际套接字路径,修改php.ini中的pdo_mysql.default_socket配置为对应路径,重启PHP服务后再执行迁移

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 08:36:03