如何通过环境变量禁用Bitnami MongoDB分片集群的writeConcern
解决Prisma连接Bitnami MongoDB分片集群时的writeConcern错误
我通过Bitnami MongoDB分片文档中的Docker Compose示例创建了分片集群,执行命令:
curl -sSL https://raw.githubusercontent.com/bitnami/containers/main/bitnami/mongodb-sharded/docker-compose.yml > docker-compose.yml docker-compose up -d
使用Prisma连接时出现错误:
writeConcern is not allowed within a multi-statement transaction
以下是我的docker-compose.yml内容:
# Copyright VMware, Inc. # SPDX-License-Identifier: APACHE-2.0 version: '2' services: mongodb-sharded: image: docker.io/bitnami/mongodb-sharded:6.0 environment: - MONGODB_ADVERTISED_HOSTNAME=mongodb-sharded - MONGODB_SHARDING_MODE=mongos - MONGODB_CFG_PRIMARY_HOST=mongodb-cfg - MONGODB_CFG_REPLICA_SET_NAME=cfgreplicaset - MONGODB_REPLICA_SET_KEY=replicasetkey123 - MONGODB_ROOT_PASSWORD=password123 ports: - "27017:27017" mongodb-shard0: image: docker.io/bitnami/mongodb-sharded:6.0 environment: - MONGODB_ADVERTISED_HOSTNAME=mongodb-shard0 - MONGODB_SHARDING_MODE=shardsvr - MONGODB_MONGOS_HOST=mongodb-sharded - MONGODB_ROOT_PASSWORD=password123 - MONGODB_REPLICA_SET_MODE=primary - MONGODB_REPLICA_SET_KEY=replicasetkey123 - MONGODB_REPLICA_SET_NAME=shard0 volumes: - 'shard0_data:/bitnami' mongodb-cfg: image: docker.io/bitnami/mongodb-sharded:6.0 environment: - MONGODB_ADVERTISED_HOSTNAME=mongodb-cfg - MONGODB_SHARDING_MODE=configsvr - MONGODB_ROOT_PASSWORD=password123 - MONGODB_REPLICA_SET_MODE=primary - MONGODB_REPLICA_SET_KEY=replicasetkey123 - MONGODB_REPLICA_SET_NAME=cfgreplicaset volumes: - 'cfg_data:/bitnami' volumes: shard0_data: driver: local cfg_data: driver: local
解决方案:通过环境变量禁用writeConcern
Bitnami的MongoDB镜像支持通过MONGODB_WRITE_CONCERN环境变量配置写入关注级别,将其设置为空字符串即可禁用默认的writeConcern配置。需要在所有MongoDB服务的environment部分添加该变量:
修改后的docker-compose.yml:
# Copyright VMware, Inc. # SPDX-License-Identifier: APACHE-2.0 version: '2' services: mongodb-sharded: image: docker.io/bitnami/mongodb-sharded:6.0 environment: - MONGODB_ADVERTISED_HOSTNAME=mongodb-sharded - MONGODB_SHARDING_MODE=mongos - MONGODB_CFG_PRIMARY_HOST=mongodb-cfg - MONGODB_CFG_REPLICA_SET_NAME=cfgreplicaset - MONGODB_REPLICA_SET_KEY=replicasetkey123 - MONGODB_ROOT_PASSWORD=password123 - MONGODB_WRITE_CONCERN='' # 添加此行禁用writeConcern ports: - "27017:27017" mongodb-shard0: image: docker.io/bitnami/mongodb-sharded:6.0 environment: - MONGODB_ADVERTISED_HOSTNAME=mongodb-shard0 - MONGODB_SHARDING_MODE=shardsvr - MONGODB_MONGOS_HOST=mongodb-sharded - MONGODB_ROOT_PASSWORD=password123 - MONGODB_REPLICA_SET_MODE=primary - MONGODB_REPLICA_SET_KEY=replicasetkey123 - MONGODB_REPLICA_SET_NAME=shard0 - MONGODB_WRITE_CONCERN='' # 添加此行禁用writeConcern volumes: - 'shard0_data:/bitnami' mongodb-cfg: image: docker.io/bitnami/mongodb-sharded:6.0 environment: - MONGODB_ADVERTISED_HOSTNAME=mongodb-cfg - MONGODB_SHARDING_MODE=configsvr - MONGODB_ROOT_PASSWORD=password123 - MONGODB_REPLICA_SET_MODE=primary - MONGODB_REPLICA_SET_KEY=replicasetkey123 - MONGODB_REPLICA_SET_NAME=cfgreplicaset - MONGODB_WRITE_CONCERN='' # 添加此行禁用writeConcern volumes: - 'cfg_data:/bitnami' volumes: shard0_data: driver: local cfg_data: driver: local
修改完成后,重启集群使配置生效:
docker-compose down docker-compose up -d
内容的提问来源于stack exchange,提问作者rostamiani
相关产品推荐
相关产品推荐

