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

时间:2019-04-27 07:48:14

标签: node.js mongodb mongoose mlab

我正在尝试使用int a[5] = {4, 5, 6}; // a[0] = 4, ..., a[3] = a[4] = 0; int b[5]; // uninitialized b[0] = 4; b[1] = 5; b[2] = 6; m(b); // b[3] and b[4] have not been initialized/assigned // accessing them is UB 进行简单的交易。它在mongoose上运行正常,但是在MongoDB Atlas中出现了这样的错误:mlab。我做了一些研究,但并没有真正找到有关MongoError: Transaction numbers are only allowed on storage engines that support document-level lockingmlab的任何资源。 有人知道如何解决这个问题吗?

3 个答案:

答案 0 :(得分:9)

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

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

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

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

答案 1 :(得分:5)

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

当前网址

@JsonSerialize(using= ToStringSerializer.class)
private ObjectId brandId;
...

新网址

 mongodb://<user>:<password>@ds0145508.mlab.com:11508/testdb

答案 2 :(得分:1)

mlab.com运行mongodb 3.6,而最新版本是4.2.x,而工具,数据库连接器等则希望使用4.x功能。

简而言之,mlab.com已过时。