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

构建MySQL Docker镜像时SQL语法报错,镜像崩溃求助

解决Docker构建MySQL容器时SQL脚本执行报错的问题

错误原因分析

  • Dockerfile里的RUN /docker-entrypoint-initdb.d/books.sql是核心错误:该命令会把SQL脚本当作shell脚本执行,shell无法解析SQL语法,因此触发语法错误。
  • MySQL官方镜像会自动在容器启动时执行/docker-entrypoint-initdb.d/目录下的.sql/.sql.gz/.sh文件,无需手动用RUN执行。
  • SQL文件中使用双引号包裹表名、字段名等标识符,在MySQL默认配置下可能不被识别,建议改用MySQL标准的反引号。

修正后的文件内容

Dockerfile

FROM mysql:latest

ENV MYSQL_DATABASE books

COPY ./sqlscript /docker-entrypoint-initdb.d/

(移除了多余的RUN命令)

SQL文件(books.sql)

CREATE TABLE `articulos` (
`id` int NOT NULL AUTO_INCREMENT,
`titulo` text,
`contenido` text,
`fechacreacion` date DEFAULT NULL,
`categoria` text,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=143 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

(将所有双引号替换为反引号,符合MySQL标识符规范)

构建和运行容器步骤

  1. 确认目录结构正确:
.
├── Dockerfile
└── sqlscript
    └── books.sql
  1. 构建镜像:
docker build -t mysql-books .
  1. 启动容器(需设置root密码等必要环境变量):
docker run -d -e MYSQL_ROOT_PASSWORD=your_password -p 3306:3306 mysql-books

容器启动后,MySQL会自动执行初始化脚本,创建指定的数据表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:48:38