mLab 连接错误:数据库名称不能有 mongodb:// 的保留字符
Posted
技术标签:
【中文标题】mLab 连接错误:数据库名称不能有 mongodb:// 的保留字符【英文标题】:mLab Connect Error: Database name cannot have reserved characters for mongodb:// 【发布时间】:2018-06-11 09:48:28 【问题描述】:我在运行 mLab 命令以通过 mongo shell 进行连接时遇到 mongoDB 连接错误。使用下面的 mLab 命令在 Windows git bash 终端下运行。我没有使用任何保留字符作为数据库名称,基本上只是一个小写字符串。有什么想法吗?
使用 mongo shell 连接:
mongo ds237967.mlab.com:37967/<database> -u <dbuser> -p <dbpassword>
connecting to: mongodb://<database>:27017/ds237967.mlab.com%3A37967
2018-01-01T00:20:45.371-0800 E QUERY [thread1] Error: Database name cannot have reserved characters for mongodb:// URL: mongodb://<databasename>:27017/ds237967.mlab.com%3A37967 :
connect@src/mongo/shell/mongo.js:240:13
@(connect):1:6
exception: connect failed
【问题讨论】:
shell 试图连接到mongodb://<database>:27017/ds237967.mlab.com%3A37967
的这个 URL 格式完全错误。您在编辑数据库名称时是否更改了它?应该只是ds237967.mlab.com:37967/<database>
。
您问题中的错误和命令似乎不匹配。如果您运行这样的命令:mongo <database>:27017/ds237967.mlab.com:37967 -u <dbuser> -p <dbpassword>
,就会出现这种错误。您是否以任何方式从 mLab 门户编辑主机名?
我怀疑问题出在格式错误的 URL 上,我根本没有更改它。我运行的唯一命令是“mongo ds237967.mlab.com:37967/而不是使用
mongo ds237967.mlab.com:37967/<database> -u <dbuser> -p <dbpassword>
试试
mongo --port 37967 --host ds237967.mlab.com <database> -u <dbuser> -p <dbpassword>
它应该对我有用。如果没有请告诉我
【讨论】:
【参考方案2】:您应该在编写数据库名称等时删除“”字符。
这是一个例子:
mongo ds237967.mlab.com:37967/databaseName -u dbUser -p dbpassword
【讨论】:
【参考方案3】:看起来你遇到了这个错误:
https://jira.mongodb.org/browse/SERVER-31437
URL 中的主机名和数据库被转置的位置。
如果是这种情况,您当前版本的 Mongo 的解决方法是使用 --port 和 --host 参数指定端口和主机名,如 hasysf 的回答中所述。
否则,请考虑升级到已修复此问题的版本(v3.4.12 或 v3.6)。
【讨论】:
【参考方案4】:您需要替换为默认连接将使用的数据库的名称:
mongo "mongodb+srv://sandbox.5xx8l.mongodb.net/<dbname>" --username <dbuser> --password<dbpassword>
您还可以从代码中删除数据库。下面的代码应该可以正常工作:
mongo ds237967.mlab.com:37967 -u <dbuser> -p <dbpassword>
【讨论】:
以上是关于mLab 连接错误:数据库名称不能有 mongodb:// 的保留字符的主要内容,如果未能解决你的问题,请参考以下文章
无法从 AWS EC2 实例连接到 Mlab.com 数据库