【发布时间】:2019-09-16 14:32:35
【问题描述】:
我正在尝试使用mongoose 进行简单的交易。它在MongoDB Atlas 上运行得很好,但在mlab 中我遇到了这样的错误:MongoError: Transaction numbers are only allowed on storage engines that support document-level locking。我做了一些研究,但并没有真正找到有关mlab 和document-level locking 的任何资源。
有谁知道如何解决这个问题?
【问题讨论】:
-
错误消息表明您的 mLab 部署正在使用不支持文档级锁定或事务的较旧(现已弃用)的 MMAPv1 存储引擎。服务器端多文档事务需要使用 WiredTiger 存储引擎的 MongoDB 4.0+ 副本集部署。升级您的 mLab 部署以满足事务要求将解决该错误。
-
你解决了吗?谢谢
-
感谢 Stennie 的回答,我能够弄清楚这一点。我正在使用带有 MongoID 的 Ruby/Rails,我遇到了同样的问题(事务号只允许在支持文档级锁定的存储引擎上使用 (20)),奇怪的是它只发生在生产环境(Heroku)和不在开发环境中,我的 mongoDB 数据库在 mlab(3.6.12(MMAPv1))上,我移至 Atlas,问题消失了 + 我现在正在运行 Mongo 4+。
-
是的 Carlos,就像 Juan Ricardo 我搬到了 mongodb cloud (atlas) 并解决了。
-
@JuanRicardo 我使用 Ruby/Rails 遇到了同样的问题,我使用 mongo 2.8.0 驱动程序解决了这个问题。我在 mongo 2.9.0 中使用了 mongoid 6.1.1。看看这个issue
标签: node.js mongodb mongoose mlab