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

Laravel Sail执行migrate报错SQLSTATE[HY000][2002]:无法解析mysql地址

解决Laravel Sail迁移时MySQL地址解析失败问题

核心原因

该错误是PHP容器无法解析MySQL服务主机名导致的,本质是容器网络或配置不匹配。

1. 匹配Docker Compose服务名与DB_HOST

打开项目根目录的docker-compose.yml,找到MySQL服务的名称(默认是mysql),确保.env文件中的DB_HOST值与该服务名完全一致:

# .env 正确配置示例
DB_HOST=mysql

禁止使用localhost或127.0.0.1——容器内的localhost指向自身,而非宿主机或MySQL容器。

2. 验证容器网络连通性

  • 进入Sail的PHP容器:
    ./vendor/bin/sail shell
    
  • 在容器内尝试ping MySQL服务:
    ping mysql
    
    如果ping不通,检查容器归属网络:
    • 查看项目专属网络:docker network ls(通常前缀为项目名)
    • 确认MySQL容器所在网络:docker inspect mysql | grep Networks

3. 重置Sail容器环境

  • 彻底停止并清理容器(注意:-v会删除数据卷,需提前备份数据库):
    ./vendor/bin/sail down -v
    
  • 重新启动容器:
    ./vendor/bin/sail up -d
    
  • 检查容器状态,确保MySQL容器处于Up状态:
    ./vendor/bin/sail ps
    

4. 核对MySQL默认配置

Sail默认的MySQL环境变量如下,确保.env与之匹配:

DB_CONNECTION=mysql
DB_PORT=3306
DB_USERNAME=sail
DB_PASSWORD=password

若修改过docker-compose.yml中的MySQL用户名/密码,需同步更新.env。

5. 修复Docker DNS解析问题

打开Docker设置,进入网络选项,将DNS服务器改为公共DNS(如8.8.8.8或114.114.114.114),避免本地DNS解析失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 21:50:37