报错与异常处理

更新时间:2025-03-24 02:43:14

本文介绍使用云数据库MongoDB时出现的错误信息、异常情况,其可能的原因以及解决措施。

错误信息

说明

错误信息

说明

Specified parameter AccountDescription is not valid.

备份恢复至新实例时,请检查新实例名称是否符合限制条件。

Shard total number is out of range.

恢复分片集群到新实例时,请检查新实例的分片数是否和原实例保持一致。

  • The downgrading dbinstance storage does not supported.

  • 实例暂时不支持降低磁盘空间配置。

MongoDB不支持降低实例的存储空间。如果需要降低存储空间,您可以通过创建新实例,用新实例替换原实例的方法实现,操作方法请参见其他变配场景及方案

  • Command failed with error 10107 (NotWritablePrimary): 'not primary' on server xxx.

  • Explain's child command cannot run on this node. Are you explaining a write command on a secondary?

  • Timed out after xx ms while waiting for a server that matches WritableServerSelector.

  • not master and slaveOk=false.

  • MongoNotPrimaryException: Command failed with error 10107 (NotMaster): 'not master' on server xxx.

仅主节点可以执行写操作,请检查并确认连接地址。通过主节点的连接地址连接数据库实例时,当实例触发主备切换后,主节点地址会发生变化。如需进行读写操作,建议使用高可用地址连接数据库,连接地址说明,请参见:

Classic network has not been supported, try to use VPC.

所有保有经典网络类型的MongoDB实例将停止续费、变更实例规格、转换计费方式等操作。详细信息,请参见【通知】云数据库 MongoDB 版下线经典网络

There is not enough resource for your operation.

实例变配时,目标可用区资源不足。您可以尝试变更为其他规格,或提交工单联系技术支持协助处理。

The operation is not permitted due to type of the instance.

如果您重置密码时报错,请检查实例类型。Serverless实例不支持重置密码,如需修改,请提交工单联系技术支持协助处理。

源库的oplog未开启。

若您在配置数据迁移任务时失败,请检查实例类型。单节点架构不支持开启oplog,不支持DTS增量迁移,建议配置为全量迁移。

MongoDB.Driver.MongoWaitQueueFullException: The wait queue for acquiring a connection to server xxx is full.

MongoDB 驱动程序的等待队列已满,可能由于连接池设置较小或出现高并发请求等原因导致,从而无法提供可用连接。建议您优先检查对应报错程序的连接池配置,例如确保设置了合理的连接池大小,详情请参见如何限制终端的连接数

若程序侧调整后问题依然存在,您可检查MongoDB实例侧的连接数是否耗尽,排查及解决方法,请参见排查因连接数耗尽导致的数据库连接问题

The Request references an incorrect order sales component. Contact the customer support.

购买MongoDB实例时,不同可用区的资源支持情况不同,您可以尝试修改可用区、更换实例规格,或提交工单联系技术支持协助处理。

User Request was denied due to user flow control.

为了管理和控制对API的访问,阿里云对API调用频率存在约束限制。您可在配额中心查看、申请扩大API速率配额,具体操作,请参见创建配额提升申请

(TooManyLogicalSessions) Unable to add session into the cache because the number of active sessions is too high.

并发连接过多时,可能会耗尽可用会话,查看MongoDB实例的连接数及解决方法,请参见排查因连接数耗尽导致的数据库连接问题

如果连接数未发现异常,您可以通过节点监控功能查看常用资源(例如CPU使用率和内存使用率)的运行情况,确认实例规格大小是否满足业务需求,如果实例规格过小,但负载较高,可在业务低峰期升级配置。查看节点监控的具体操作,请参见节点监控,升级实例规格请参见变更实例配置

  • getaddrinfo failed.

  • No suitable servers found (`serverSelectionTryOnce` set).

请检查实例连接地址是否正确,连接地址说明,请参见:

database config lack of read privileges.

云数据库MongoDB通过DTS迁移时,源和目标数据库的数据库账号需要具备相应权限,具体权限要求及授权方法,请参见:

Specified restore time is not valid.

通过API恢复实例时,请检查恢复时间是否有效,参数格式为yyyy-MM-ddTHH:mm:ssZ(UTC 时间)。例如,北京时间为“2024-11-08 20:00:00”,需要减去8小时转换为UTC时间,对应结果为“2024-11-08T12:00:00Z”。

server returned error on SASL authentication step: BSON field 'saslContinue.mechanism' is an unknown field.

跨版本恢复实例时,身份验证机制不同时会导致认证失败。MongoDB 4.0版本的默认验证机制为SCRAM-SHA-251,MongoDB 5.0及以上版本的默认验证机制为SCRAM-SHA-256。

TypeError: db.xxx.find is not a function.

集合命名可能命中关键词,建议使用db.getCollection("xxx").find查询,或者修改集合名称。

createUser failed: Command failed with error xx (Unauthorized): 'not authorized on admin to execute command xxx.

阿里云账号权限收敛,不再支持创建拥有admin系统库可写权限的账号,以避免向admin系统库写入数据时可能引发的性能抖动问题。创建拥有相关权限的账号,更多信息请参见实例创建时指定的root账号拥有什么权限?

Specified network type does not matched.

当实例已添加经典安全组,您将无法同时添加专有安全组。

Instance's MinorVersion is not supported for this API.

实例小版本低,建议升级小版本。具体操作及影响,请参见升级数据库小版本

The instance is at the End of Full Support (EOFS) stage.

该实例版本已经进入EOFS阶段,不支持续费,建议升级大版本。具体操作及影响,请参见升级数据库大版本

The resource is out of usage.

出现该报错表示创建或变配实例时,资源出现问题。建议您在出现报错时获取相关Request ID,并提交工单联系技术支持处理。

控制台如何获取Request ID,请参见获取Request ID

登录时提示Authentication failed错误

MongoDB的账号是跟数据库(Database)关联的,鉴权时需要指定账号所属的数据库信息。

假设账号和密码都是test,test账号属于admin数据库。

高可用地址
单节点地址

当您使用ConnectionStringURI地址、ReadOnly ConnectionStringURI高可用地址连接数据库时,需要设置authSource参数指定数据库账号所属的数据库,如果不配置该参数,<database>会作为鉴权数据库。

示例如下:

mongo mongodb://test:test@<host1>:<port1>,<host2>:<port2>,...,<hostN>:<portN>/<database>?replicaSet=<replicaSet_value>&authSource=admin

或者

mongo mongodb://test:test@<host1>:<port1>,<host2>:<port2>,...,<hostN>:<portN>/admin?replicaSet=<replicaSet_value>

可使用如下命令登录:

mongo --host $myhost --port $myport -u test -p test --authenticationDatabase admin

或者

    mongo --host $myhost --port $myport
    mongo> use admin
    mongo> db.auth("test", "test")

关于连接地址的参数说明,请参见副本集实例连接说明分片集群实例连接说明