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

Docker部署MySQL后本地执行Doctrine Migration无法访问数据库问题

问题原因

你出现这个报错的核心原因是域名解析问题:

  • 你的.env配置里写的数据库主机名是db,这是Docker Compose为同网络下容器分配的内部服务域名,只有运行在同一Docker网络中的容器才能识别并解析这个域名
  • 你是在宿主机(容器外部)执行的Doctrine迁移命令,宿主机的DNS没有db这个域名的映射,自然无法找到对应的数据库地址
  • 而PhpMyAdmin可以正常访问,是因为它本身也是Docker Compose启动的容器,和MySQL服务在同一网络下,可以正常解析db域名

解决方案

你可以二选一:

  1. 如果坚持在宿主机执行迁移命令
    修改你的.env配置,将数据库主机地址从db改为127.0.0.1即可,因为你已经在docker-compose中把MySQL的3306端口映射到了宿主机的3306端口:
BDD = pdo-mysql://root:root@127.0.0.1:3306/playlist_maker_multi

注意这种方式会导致你把代码放到web-server容器里运行时需要把地址改回db,容易出现环境不一致的问题。

提示:如果你的宿主机本地也运行了MySQL服务占用了3306端口,第一种方案可能会连接到本地的MySQL而非Docker中的MySQL服务,优先推荐使用第二种方案。

  1. 更推荐的规范做法:在容器内执行迁移命令
    直接通过docker compose exec在web-server容器中执行迁移命令,不需要修改任何配置,和线上运行环境完全一致:
docker compose exec web-server ./vendor/bin/doctrine-migrations status

内容的提问来源于stack exchange,提问作者Camille Hurtaud

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:54:05