Docker部署MySQL 5.7.41如何禁用autocommit?
解决Docker中MySQL 5.7.41禁用autocommit的问题
你之前用--autocommit=FALSE和--skip-autocommit参数无效的原因是:MySQL的启动参数里根本没有这两个选项,这些参数不会被MySQL识别,autocommit依然保持默认的ON状态。
下面给你两种可行的解决方案:
方案一:用初始化SQL脚本设置全局autocommit
- 在本地创建一个
init.sql文件,内容如下:
SET GLOBAL autocommit = OFF;
- 启动Docker容器时,把这个脚本挂载到容器的
/docker-entrypoint-initdb.d/目录(MySQL镜像会自动执行该目录下的SQL脚本):docker run --name mysql57 -e MYSQL_ROOT_PASSWORD=aaa -p 3306:3306 -v /你的本地路径/init.sql:/docker-entrypoint-initdb.d/init.sql -d mysql:5.7.41
注意替换
/你的本地路径/为你实际存放init.sql的路径。
方案二:通过自定义配置文件永久禁用autocommit
- 在本地创建一个
my.cnf配置文件,添加以下内容:
[mysqld] autocommit = 0
- 启动容器时,把这个配置文件挂载到容器的
/etc/mysql/conf.d/目录(该目录下的配置会覆盖MySQL默认配置):docker run --name mysql57 -e MYSQL_ROOT_PASSWORD=aaa -p 3306:3306 -v /你的本地路径/my.cnf:/etc/mysql/conf.d/my.cnf -d mysql:5.7.41
验证是否生效
容器启动后,连接MySQL执行以下命令:
SHOW VARIABLES WHERE Variable_name = 'autocommit';
返回结果应该显示Value为OFF,说明autocommit已成功禁用。
内容的提问来源于stack exchange,提问作者Mario Rovelli
相关产品推荐
相关产品推荐

