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

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

解决Laradock环境下Laravel执行php artisan migrate的数据库连接错误

核心问题原因

Laradock是Docker容器化环境,Laravel应用和MySQL各自运行在独立容器里。你之前用localhost或127.0.0.1作为数据库主机,指向的是Laravel容器自身,而非MySQL容器:

  • 用localhost时,PHP会尝试通过Unix socket连接,但Laravel容器里没有MySQL的socket文件,触发SQLSTATE[HY000] [2002] No such file or directory
  • 用127.0.0.1时,Laravel容器尝试连接自身的3306端口,但该端口没运行MySQL服务,触发连接拒绝

具体解决步骤

1. 修改.env文件的数据库主机配置

把.env里的DB_HOST改成Laradock中MySQL容器的服务名(默认是mysql):

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=laravelApp
DB_USERNAME=root
DB_PASSWORD=root

2. 确认MySQL容器正常运行

进入Laradock目录,执行命令检查MySQL容器状态:

docker-compose ps mysql

如果容器没启动,手动启动:

docker-compose up -d mysql

3. 确认目标数据库已创建

进入MySQL容器内部,检查laravelApp数据库是否存在:

docker-compose exec mysql mysql -uroot -proot

进入MySQL命令行后执行:

SHOW DATABASES;

如果没有laravelApp,手动创建:

CREATE DATABASE laravelApp;

4. 清除Laravel配置缓存

修改.env后,清除缓存确保新配置生效:

php artisan config:clear
php artisan cache:clear

额外排查点

  • 检查Laradock的docker-compose.yml中MySQL服务的端口映射是否为3306:3306
  • 确认.env里的DB_PASSWORD和Laradock MySQL容器的ROOT密码一致(默认是root,可在Laradock的.env文件中修改)

内容的提问来源于stack exchange,提问作者Mert Can Karakaya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 12:21:02