要修改 Docker 容器中 MySQL 5.7 的 SQL 模式(SQL mode),可以通过以下几种方法实现:
方法 1:修改 MySQL 配置文件
-
创建一个自定义的 MySQL 配置文件:
创建一个
my.cnf文件,并添加以下内容:[mysqld] sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"上面的内容是一个示例配置,你可以根据需要修改
sql_mode的值。 -
挂载自定义配置文件到 Docker 容器:
在运行 MySQL 容器时,使用
-v参数将本地的配置文件挂载到容器内:docker run --name mysql -v /path/to/my.cnf:/etc/mysql/conf.d/my.cnf -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:5.7确保
/path/to/my.cnf是你本地配置文件的实际路径。
方法 2:通过环境变量修改 SQL mode
-
使用
--sql_mode选项:运行 MySQL 容器时,通过
--sql_mode选项直接指定 SQL 模式:docker run --name mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:5.7 --sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
方法 3:在运行的 MySQL 容器中更改 SQL mode
-
进入 MySQL 容器:
docker exec -it mysql bash -
连接 MySQL:
mysql -u root -p -
查看当前 SQL mode:
SHOW VARIABLES LIKE 'sql_mode'; -
修改 SQL mode:
SET GLOBAL sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';要永久保存这个设置,需要将其加入 MySQL 的配置文件中,或者在启动时使用上述的方法 1 或 2。
这三种方法都可以用来修改 Docker 中 MySQL 5.7 的 SQL mode,选择最适合你环境的方法即可。