我正在尝试使用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 locking
和mlab
的任何资源。
有人知道如何解决这个问题吗?
答案 0 :(得分:9)
该错误表示您的应用程序/驱动程序正在尝试使用与您的共享群集部署不兼容的功能,该功能使用了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已过时。