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
相关产品推荐
相关产品推荐

