要修改 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,选择最适合你环境的方法即可。