本文介绍使用云数据库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? | |
Classic network has not been supported, try to use VPC. | 所有保有经典网络类型的MongoDB实例将停止续费、变更实例规格、转换计费方式等操作。详细信息,请参见【通知】云数据库 MongoDB 版下线经典网络。 |
There is not enough resource for your operation. | 实例变配时,目标可用区资源不足。您可以尝试变更为其他规格,或提交工单联系技术支持协助处理。 |
源库的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使用率和内存使用率)的运行情况,确认实例规格大小是否满足业务需求,如果实例规格过小,但负载较高,可在业务低峰期升级配置。查看基本监控的具体操作,请参见基本监控,升级实例规格请参见变更实例配置。 |
登录时提示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")
关于连接地址的参数说明,请参见副本集实例连接说明、分片集群实例连接说明。