Docker+Laravel项目迁移报错:SQLSTATE[HY000][1049]未知数据库
解决Docker部署Laravel时数据库不存在的问题
1. 清理MySQL持久化数据卷
旧数据卷可能残留异常配置,导致自动创建数据库失败。执行命令重置:
# 停止服务并删除数据卷 docker-compose down -v # 重新启动服务 docker-compose up -d
2. 验证.env变量加载正确性
- 确保
.env文件中DB_DATABASE=ead无多余空格,且文件位于项目根目录(与docker-compose.yml同级) - 检查docker-compose.yml中MySQL服务的环境变量是否正确引用.env变量,确认
${DB_DATABASE}等变量名与.env完全一致 - 使用Sail时,必须通过Sail命令执行迁移,避免本地PHP连接错误:
sail artisan migrate
3. 手动创建目标数据库
若自动创建逻辑失效,手动进入MySQL容器创建数据库:
# 进入MySQL容器 docker exec -it laravel-api-ead-mysql-1 mysql -u root -p # 输入密码后执行SQL CREATE DATABASE ead; GRANT ALL PRIVILEGES ON ead.* TO 'root'@'%'; FLUSH PRIVILEGES;
4. 确认容器网络连通性
确保Laravel容器与MySQL容器在同一网络:
# 进入Laravel容器(替换为你的Laravel容器名) docker exec -it [your-laravel-container-name] ping mysql
若ping不通,检查docker-compose.yml中networks配置,确保两个服务都加入了laravel-eti网络。
5. 检查phpMyAdmin配置
若phpMyAdmin无法显示数据库,确认其服务配置中PMA_HOST指向mysql服务名,且与MySQL容器处于同一网络。
内容的提问来源于stack exchange,提问作者Sapinn
相关产品推荐
相关产品推荐

