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

通过Docker Compose启动MySQL时无法自动运行SQL脚本问题求助

问题排查与解决步骤

    1. 清理已生成的历史容器与数据卷(最高频原因)
      MySQL 官方镜像的初始化脚本仅在首次启动、无已有 MySQL 数据目录时执行,如果你之前启动过该服务已经生成了持久化数据,后续重启不会重新执行初始化脚本。执行以下命令清理历史数据:
    docker compose down -v
    
    注意:-v 参数会删除你声明的 my-db 卷,已有的 MySQL 数据会被清空,确认后再执行。执行完成后重新启动服务:
    docker compose up -d
    
    1. 检查文件挂载与权限
      先确认挂载路径是否正确,执行以下命令查看容器内初始化目录的文件:
    docker compose exec db ls -l /docker-entrypoint-initdb.d
    
    如果看不到 setup.sql,检查你的项目目录结构是否为:
    项目根目录
    ├─ docker-compose.yaml
    └─ db/
       └─ setup.sql
    
    如果能看到文件但执行失败,大概率是权限问题,给本地 setup.sql 添加全局读权限:
    chmod 644 ./db/setup.sql
    
    之后再执行第一步的清理重启操作即可。
    1. 检查SQL脚本语法
      先手动执行脚本验证是否有语法错误:
    docker compose exec db mysql -uroot -ppassword < /docker-entrypoint-initdb.d/setup.sql
    
    如果执行报错,修正脚本错误后再重新清理启动。
    1. 补充数据卷挂载配置(可选优化)
      你当前的配置里顶层声明了 my-db 卷,但没有挂载到 MySQL 的实际数据存储路径,容器删除后 MySQL 的数据会丢失,可以修改 services.db.volumes 配置补充挂载:
    volumes:
      - ./db:/docker-entrypoint-initdb.d
      - my-db:/var/lib/mysql
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:15:04