Laravel执行php artisan migrate报错SQLSTATE[HY000][2002]求助
解决Laravel
php artisan migrate 数据库连接错误 核心问题分析
你遇到的SQLSTATE[HY000] [2002] No such file or directory错误,本质是Laravel无法找到MySQL服务的连接路径,常见触发原因包括:
- 混淆了phpMyAdmin的网页访问端口与MySQL服务端口
- Docker环境下
DB_HOST配置指向错误(当前终端显示为Docker容器环境)
分步解决步骤
1. 修正端口配置,区分服务端口与管理界面端口
你提到的http://localhost:8081是phpMyAdmin的网页访问端口,MySQL服务默认端口为3306,除非你的MySQL服务特意修改过端口。先将.env中的DB_PORT改回3306。
2. 调整DB_HOST适配Docker环境
因为你在Docker容器内运行Laravel,localhost指向的是当前Laravel容器本身,而非宿主机或其他容器的MySQL服务,需根据MySQL的部署位置修改:
- 若MySQL在宿主机(Docker外)运行:
Linux/macOS系统将DB_HOST改为host.docker.internal;Windows系统可尝试host.docker.internal或127.0.0.1。 - 若MySQL在另一个Docker容器运行:
将DB_HOST改为MySQL容器的名称或容器IP(可通过docker inspect 容器名命令查看IP)。
3. 确认数据库与权限配置
- 通过
http://localhost:8081登录phpMyAdmin,确认church数据库已创建。 - 检查
root用户(或你配置的DB_USERNAME)是否拥有church数据库的访问权限,若MySQL设置了密码,需填写正确的DB_PASSWORD。
4. 清除Laravel配置缓存
修改.env后需清除配置缓存,避免Laravel使用旧配置:
php artisan config:clear php artisan cache:clear
5. 测试连接并执行迁移
先测试数据库连接是否正常:
php artisan db:connect
连接成功后再执行迁移命令:
php artisan migrate
内容的提问来源于stack exchange,提问作者PaulCatalin
相关产品推荐
相关产品推荐

