问题描述
我正在使用 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。