如何解决mlab中的交易错误?[MongoError:事务编号...支持文档级锁定]

DeS*_*der 10 mongoose mongodb node.js mlab

我正在尝试使用进行简单的交易mongoose。在上一切正常MongoDB Atlas,但出现mlab了这样的错误:MongoError: Transaction numbers are only allowed on storage engines that support document-level locking。我做了一些研究,但实际上并没有找到有关mlab和的任何资源document-level locking。有谁知道如何解决这个问题?

Lij*_*ijo 8

这通过添加 retryWrites=false 对我有用;

当前网址

 mongodb://<user>:<password>@ds0145508.mlab.com:11508/testdb
Run Code Online (Sandbox Code Playgroud)

新网址

mongodb://<user>:<password>@ds0145508.mlab.com:11508/testdb?retryWrites=false 
Run Code Online (Sandbox Code Playgroud)


小智 5

我也遇到同样的问题,然后我联系mlab帮助,这是他们的回复:

该错误表明您的应用程序/驱动程序正在尝试使用与您的共享群集部署不兼容的功能,该功能使用了MMAPv1存储设备。您可能启用了可重试写入(https://docs.mongodb.com/manual/core/retryable-writes/)。您可以尝试在连接字符串(https://docs.mongodb.com/manual/reference/connection-string/#urioption.retryWrites)中关闭该功能,还是直接从驱动程序设置中关闭该功能?

关闭此功能后,如果您仍然遇到此错误,请告诉我们。

基于此答案,我在mongodb连接url中附加了retryWrites = false,然后运行良好。