使用brew升级Mongo更新从3.4到4.0错误:在尝试升级到4.0之前,需要将数据文件完全升级到3.6版

sea*_*ain 16 mongodb

mongod
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

**重要提示:升级问题:在尝试升级到4.0之前,需要将数据文件完全升级到3.6版; 有关详细信息,请参阅http://dochub.mongodb.org/core/4.0-upgrade-fcv.

但是,如果我使用

brew services start mongodb
Run Code Online (Sandbox Code Playgroud)

那么mongo服务器就可以启动了.

修复mongod错误

我发现了类似的错误线程

将Mongodb从3.2升级到3.6时出错

所以我降级到mongodb 3.6,然后运行

db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )
Run Code Online (Sandbox Code Playgroud)

然后重新安装mongodb 4.0,我运行时仍然有同样的错误

mongodb
Run Code Online (Sandbox Code Playgroud)

我还是要用

brew services start mongodb
Run Code Online (Sandbox Code Playgroud)

启动mongodb

在命令行中,我运行

> db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
{ "featureCompatibilityVersion" : { "version" : "3.6" }, "ok" : 1 }
> 
Run Code Online (Sandbox Code Playgroud)

它说featureCompatibilityVersion是3.6

还有什么我需要做的才能满足"数据文件需要完全升级到3.6版"?

谢谢!

sea*_*ain 48

我需要将MongoDB降级到3.2.清理所有版本.然后逐步升级到3.4,3.6和4.0.

首先,备份你的/ data/db,以防万一.

以下步骤来自我的经验,我用brew来安装/卸载mongodb.

我按照此线程的说明操作,但在iMac上执行以下步骤.

将Mongodb从3.2升级到3.6时出错

卸载您当前的mongodb

brew uninstall mongodb
Run Code Online (Sandbox Code Playgroud)

安装mongodb 3.2版本

brew install mongodb@3.4
Run Code Online (Sandbox Code Playgroud)

启动mongod 3.2版本(当你安装上面的旧版本时,你需要完整的路径来运行它.)

/usr/local/opt/mongodb@3.4/bin/mongod
Run Code Online (Sandbox Code Playgroud)

启动mongo 3.2版本

/usr/local/opt/mongodb@3.4/bin/mongo
Run Code Online (Sandbox Code Playgroud)

运行重要命令

> db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )
Run Code Online (Sandbox Code Playgroud)

放弃

>quit();
Run Code Online (Sandbox Code Playgroud)

终止mongod

Find PID of mongod process using $ top

Kill the process by $ kill <PID> (the Mongo docs have more info on this)
Run Code Online (Sandbox Code Playgroud)

卸载mongodb 3.2

brew uninstall mongodb@3.4
Run Code Online (Sandbox Code Playgroud)

重复上述步骤3.4

安装mongodb 3.4版本

brew install mongodb@3.6
Run Code Online (Sandbox Code Playgroud)

启动mongod 3.4版本

/usr/local/opt/mongodb@3.6/bin/mongod
Run Code Online (Sandbox Code Playgroud)

启动mongo 3.4版本

/usr/local/opt/mongodb@3.6/bin/mongo
Run Code Online (Sandbox Code Playgroud)

运行重要命令

> db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )
Run Code Online (Sandbox Code Playgroud)

...

对mongodb 3.6重复上述步骤

...

最后,在卸载3.6之后,你可以安装最新的版本,4.x,你不必指定@ 4.x等,只需

安装最新版本

brew install mongodb
Run Code Online (Sandbox Code Playgroud)