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

通过docker-compose启动MySQL容器后数据库存在但无表的问题

问题原因

MySQL官方镜像仅会自动执行/docker-entrypoint-initdb.d/目录下的.sql、.sql.gz或.sh格式初始化脚本。你当前将init.sql挂载到了/data/application/init.sql,该路径不在镜像的自动执行范围内,因此脚本中的建表语句并未被执行。而QUARTZ_SCHEMA数据库是通过环境变量MYSQL_DATABASE自动创建的,所以能看到数据库但无任何表。

解决方案

修改docker-compose.yaml中的挂载路径,将初始化脚本放到镜像指定的目录:

services:
  mysql:
    image: mysql:oraclelinux9
    container_name: mysql_quartz
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: QUARTZ_SCHEMA
    volumes:
      - ./mysql/init.sql:/docker-entrypoint-initdb.d/init.sql
额外注意
  • 若之前已启动过容器,MySQL会生成初始化标记文件以避免重复执行脚本,需先清理容器及关联数据卷:
    docker compose down -v
    docker compose up -d
    
  • 确保本地init.sql文件权限正常,可执行chmod 644 ./mysql/init.sql调整权限,防止容器内无法读取脚本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 00:39:57