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

Laradock环境执行php artisan migrate遇SQLSTATE[HY000] [2002]错误求助

解决Laradock环境下Laravel php artisan migrate 出现的SQL连接错误

首先,这个错误SQLSTATE[HY000] [2002] No such file or directory在Laradock的Docker容器环境里是个非常常见的坑,核心原因是你配置的DB_HOST=localhost不对——在容器架构中,Laravel应用运行在独立的workspace容器里,而MySQL是另一个单独的mysql容器,localhost指向的是Laravel所在容器本身,自然找不到MySQL服务。

下面是一步步的解决步骤:

  • 修改Laravel的.env配置文件
    把DB_HOST=localhost改成DB_HOST=mysql(Laradock默认的MySQL服务容器名称就是mysql),修改后的数据库配置段应该是:

    DB_CONNECTION=mysql
    DB_HOST=mysql
    DB_PORT=3306
    DB_DATABASE=yt
    DB_USERNAME=root
    DB_PASSWORD=root
    
  • 确保MySQL容器已经启动
    进入你的Laradock目录,执行命令启动MySQL服务:

    cd laradock && docker-compose up -d mysql
    

    可以用docker-compose ps命令查看mysql容器的状态,确认它处于Up运行状态。

  • 清除配置缓存(可选但建议)
    如果之前缓存过配置,需要清除缓存让新的.env配置生效:

    # 进入workspace容器执行
    docker-compose exec workspace php artisan config:clear
    # 或者直接在宿主机项目根目录执行(如果Laradock配置了正确的路径映射)
    php artisan config:clear
    
  • 验证数据库连接
    可以进入workspace容器用tinker测试连接:

    docker-compose exec workspace php artisan tinker
    

    在tinker交互环境里执行:

    DB::connection()->getPdo();
    

    如果没有报错,说明连接正常,再执行php artisan migrate就可以顺利运行了。

额外排查点

  • 确认yt数据库已经在MySQL容器中创建:可以通过docker-compose exec mysql mysql -uroot -proot进入MySQL控制台,执行CREATE DATABASE IF NOT EXISTS yt;确保数据库存在。
  • 检查Laradock的docker-compose.yml中MySQL服务的配置,确认容器名称没有被自定义修改过(默认是mysql)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:26:17