MongoDB StartSession 提交和回滚失败

问题描述

我正在使用 Laravel 框架并使用 MongoDB。所以我需要提交并回滚集合保存,但我收到以下错误响应。

服务器不支持会话

我的 MongoDB 安装不支持会话吗?如果没有,我如何启用会话?

$session = DB::getMongoClient()->startSession();
$session->startTransaction();
try {  
    // Query
    $lead = Leads::create($data);
    $session->commitTransaction();
} catch (\Exception $e) {
    $session->abortTransaction();
}

这是我使用的Mongodb版本 mongodb-win32-x86_64-2008plus-ssl-3.4.24-3-g78e64a697a 刚刚复制到 bin 并运行

解决方法

很可能您连接到单个 mongoDB 实例。 您需要连接到版本>= 4.0 的replicaSet 以支持事务+会话。对于分片集群,您至少需要版本 >= 4.2 才能支持事务+会话。 对于开发/测试,您至少可以将单个 mongodb 部署转换为带有单个 PRIMARY 的 replicaSet,mongodb 版本>=4.0。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...