在Docker中运行MySQL 8,并指定其事务隔离级别为READ-COMMITTED
,可以通过两种方式来实现:
- 命令行启动时设置:
当使用Docker命令启动MySQL容器时,可以通过环境变量来指定事务隔离级别。例如:
docker run -d --name my-mysql \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-e MYSQL_TX_ISOLATION='READ-COMMITTED' \
mysql:8
注意:上述命令中的MYSQL_TX_ISOLATION
环境变量不一定直接支持设置事务隔离级别,因为MySQL官方镜像并未公开文档说明有这样的环境变量可以直接设置隔离级别。通常需要通过SQL命令或者配置文件来设置。
- 配置文件设置:
如果你打算持久化更改,可以在挂载到容器内的my.cnf
或my.ini
配置文件中添加相应的设置:
[mysqld]
transaction-isolation = READ-COMMITTED
然后启动Docker容器时挂载这个配置文件:
docker run -d --name my-mysql \
-v /path/to/my.cnf:/etc/mysql/conf.d/my.cnf \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
mysql:8
请确保路径 /path/to/my.cnf
指向包含正确配置的主机上的文件。
另外,在MySQL 8中,默认的事务隔离级别是REPEATABLE READ
,如果要切换到READ-COMMITTED
,可以使用SQL命令在会话级别上进行设置:
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
若要全局设置,则需具有相应权限,并执行:
SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;
不过请注意,全局设置通常会在服务器重启后恢复至默认设置,除非在配置文件中永久修改。