解决MongoVUE 修改错误: cannot use 'j' option when a host does not have journaling enabled

最近在使用MongoVUE对MongoDB进行管理,作为一个可视化管理工具还是十分方便和快捷。不过刚开始使用时就遇到了一些小问题,在进行修改操作时弹出错误提示:Error in performing Update/cannot use 'j' option when a host does not have journaling enabled。后经过研究,发现造成此问题主要是MongoDB的日志系统未开启,解决方法就是开启MongoDB的日志系统。

先说下问题的具体情况:每当使用MongoVUE执行修改操作都会引发错误,虽然最终的修改操作是成功的,但是依然会提示在执行修改操作的时候发生了错误。

错误截图如下:

错误信息:cannot use 'j' option when a host does not have journaling enabled

MongoVUE其他错误信息

错误信息如下:

Error in performing Update
WriteConcern detected an error 'cannot use 'j' option when a host does not have journaling enabled'. (response was { "connectionId" : 1, "updatedExisting" : true, "n" : 1, "badGLE" : { "getlasterror" : 1, "j" : true }, "ok" : 0.0, "errmsg" : "cannot use 'j' option when a host does not have journaling enabled", "code" : 2 }).
Type: MongoDB.Driver.WriteConcernException
Stack:    在 MongoDB.Driver.Operations.WriteOperation.SendMessageWithWriteConcern(MongoConnection connection, BsonBuffer buffer, Int32 requestId, BsonBinaryReaderSettings readerSettings, BsonBinaryWriterSettings writerSettings, WriteConcern writeConcern)
   在 MongoDB.Driver.Operations.UpdateOperation.Execute(MongoConnection connection)
   在 MongoDB.Driver.MongoCollection.Update(IMongoQuery query, IMongoUpdate update, MongoUpdateOptions options)
   在 MongoDB.Driver.MongoCollection.Update(IMongoQuery query, IMongoUpdate update, UpdateFlags flags, WriteConcern writeConcern)
   在 MangoUI.MCollections.UpdateIt(String db, String coll, BsonDocument match, BsonDocument update, Boolean multi, Boolean upsert, Boolean journal)
   在 MangoUI.ComUpdate.UpdateDocuments(Boolean multi)
Inputs:: 
Command:  getlasterror
Ok:       False
ErrorMsg: cannot use 'j' option when a host does not have journaling enabled
Request:  { "getlasterror" : 1, "j" : true }
Response: { "connectionId" : 1, "updatedExisting" : true, "n" : 1, "badGLE" : { "getlasterror" : 1, "j" : true }, "ok" : 0.0, "errmsg" : "cannot use 'j' option when a host does not have journaling enabled", "code" : 2 }

从上面的错误信息提示就可以看出,主要故障原因在于MongoDB的Journaling日志系统未开启。未开启的原因大概有几点,一是没有安全的退出MongoDB,二是当前的系统环境是32位系统,由于Journaling需要占用较多内存,而32位系统的内存较小,所以默认Journaling是关闭的。

每当启动MongoDB就可以看到关于Journaling未开启的提示:

MongoDB提示32位系统默认不开启Journaling

官方文档也对此进行了说明,64位系统默认是开启日志:

官方文档说明截图

根据提示,只要使用–journal命令就可以成功开启日志系统,这里又分为两种情况,如果MongoDB没有作为Windows服务安装,那么只要在启动MongoDB的命令里加上–journal即可:

mongod --journal

如果MongoDB是作为Windows服务安装,那问题估计要复杂点,由于本人对mongodb还在研究学习阶段,只能采取笨办法,先关掉服务,然后卸载掉再重新安装服务,安装的时候带上–journal命令。

首先停止服务:

停止MongoDB服务

然后卸载MongoDB服务:

mongod --dbpath "E:/MongoDB/Server/3.2/data/db" --logpath "E:/MongoDB/Server/3.2/data/log/MongoDB.log" --remove

最后重新安装MongoDB服务:

mongod --dbpath "E:/MongoDB/Server/3.2/data/db" --logpath "E:/MongoDB/Server/3.2/data/log/MongoDB.log" --install --journal

卸载和安装操作都需要在MongoDB目录下通过命令行工具执行,这里展示的操作语句是根据本人当时的安装环境来进行操作的,所以如果有需要的朋友要注意根据自身的系统环境进行修改。

最后总结下,其实最好的解决方式就是使用64位的操作系统,有条件最好就换个系统吧,良好的开发环境对应程序员同胞来说还是很重要的。


相关资料:

  1. 在windows上安装mongodb的官方文档
  2. Journaling的官方文档
  3. Manage Journaling
  4. staciouerflow相关问题1
  5. staciouerflow相关问题2



原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/98740.html

(0)
上一篇 2021年8月21日
下一篇 2021年8月21日

相关推荐

发表回复

登录后才能评论