mongodb show dbs listDatabases失败

时间:2017-09-10 21:22:07

标签: mongodb database

我是mongo db的新手。 我刚刚在我的MAC上安装了mongo DB,

观看此Youtube视频后

https://www.youtube.com/watch?v=pWbMrx5rVBE&t=369s

在mongo shell中,我输入了show dbs,我得到了有线输出。 请帮助我理解并解决这个问题

> show dbs
2017-09-11T02:45:34.298+0530 E QUERY    [thread1] Error: listDatabases failed:{
    "ok" : 0,
    "errmsg" : "unable to open cursor at URI statistics:table:collection-2-2362555297355466682. reason: No such file or directory",
    "code" : 43,
    "codeName" : "CursorNotFound"
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1
shellHelper.show@src/mongo/shell/utils.js:769:19
shellHelper@src/mongo/shell/utils.js:659:15
@(shellhelp2):1:1

3 个答案:

答案 0 :(得分:2)

经过几次研究,我找到了解决方案并分享了我学到的所有知识,所以没有新的学习者像我一样挣扎。

我的错误:

我正在使用:

盯着mongodb
mongod --config "c:\MongoDB\Mongod.cfg"

并通过运行

启动mongo shell
 mongo

启动Mongo DB和Shell

然后明白,每个命令的作用:

|*| Start Mongo DB with default config :

    mongod

|*| Start Mongo DB with config file :

        mongod -f "c:\MongoDB\Mongods.cfg"
    |Or| 
        mongod --config "c:\MongoDB\Mongod.cfg"

|O| Start Mongo DB with config flags :

    mongod --dbpath "c:\mongodb\data\nameMdb" --logpath "c:\mongodb\log\nameMdbLog.log" --directoryperdb --logappend

所以相应地我们也应该使用mongo来启动shell:

|*| Start Mongo shell with default config :

    mongo

|*| Start Mongo shell with localhost config flags :

    mongo --host localhost --port 28888

|*| Start Mongo shell with public config flags and user details :

    mongo --username <user> --password <pass> --host <Host.IP.Adrs> --port 28888

| * |这里用示例说明创建配置文件:

https://github.com/mongodb/mongo/blob/master/rpm/mongod.conf

答案 1 :(得分:0)

我今天遇到了这个问题,用Homebrew安装最新版本的MongoDB,然后启动mongo shell并输入命令“show dbs”。我多次测试这个并花了一些时间来研究它。这些症状与此处报告的问题相符:https://jira.mongodb.org/browse/SERVER-20753此问题被描述为与MongoDB分开构建WiredTiger并使用WiredTiger的过时版本。

虽然你和我所经历的情况并非如此(注意Homebrew目前正在安装3.4.9和WiredTiger 2.9.2),但我猜测它可能是WiredTiger和MongoDB之间类似的不匹配,所以我决定尝试安装不同的版本。

我最后使用这个Homebrew命令安装了最新的“dev”版本:

brew install mongodb --devel

这会安装没有问题的MongoDB 3.5.13和WiredTiger 3.0.0。请注意,3.4.9在您报告此问题的那天发布,3.5.13在第二天发布,尽管3.4.9仍然是此处列出的当前社区版:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/

答案 2 :(得分:0)

我在配置 Mongodb 进行复制时遇到了类似的问题。

当我运行以下命令时:

mongo
show dbs

我收到错误:

> show dbs
uncaught exception: Error: listDatabases failed:{
    "topologyVersion" : {
        "processId" : ObjectId("60ddea05beb1d89d4d139546"),
        "counter" : NumberLong(0)
    },
    "ok" : 0,
    "errmsg" : "not master and slaveOk=false",
    "code" : 13435,
    "codeName" : "NotPrimaryNoSecondaryOk"
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs/<@src/mongo/shell/mongo.js:147:19
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:99:12
shellHelper.show@src/mongo/shell/utils.js:937:13
shellHelper@src/mongo/shell/utils.js:819:15
@(shellhelp2):1:1

这是我修复它的方法

问题是我在没有初始化复制的情况下在 /etc/mongod.conf 文件中启用了复制功能,因此 MongoDB 无法判断哪个副本是主副本或辅助副本。

我所要做的就是注释掉 /etc/mongod.conf 文件中的复制功能,因为我还没有准备好设置复制:

#replication
#  replSetName: my-replica-set-name

之后我重新启动了mongodb服务器:

sudo systemctl restart mongod

这次命令运行良好。

仅此而已。

我希望这会有所帮助