php - php mongodb 库 abortTransaction 不起作用
问题描述
我正在尝试使用 php-mongodb 库 v1.5 学习 mongodb 事务,但我发现了一些问题。
我尝试使用给定方法启动、提交和中止事务,但 abortTransaction 对我不起作用:
$session = self::$instance->startSession();
$this->db = self::$instance->{"mydb"};
$session->startTransaction();
$this->db->users->deleteOne([
'_id' => new MongoDB\BSON\ObjectId('5c88e197df815495df201a38')
]);
$session->abortTransaction();
$session->endSession();
即使在中止操作之后也始终提交事务!
我在这里缺少什么,请保存我的一天:(
解决方案
即使在中止操作之后,事务也始终提交
这是因为删除操作没有使用session
您已实例化的对象。您需要将MongoDB\Collection::deleteOne()session
作为$options
参数传递。否则它将在事务之外执行。例如:
$session->startTransaction();
$this->db->users->deleteOne(
['_id' => new MongoDB\BSON\ObjectId('5c88e197df815495df201a38')],
['session' => $session]
);
另请参阅MongoDB 事务以获取更多信息
推荐阅读
- r - 如何添加两个单词数据框 Rstudio
- matlab - 在二维空间中旋转弹簧
- java - 尝试捕获分配值问题
- windows - cmd 显示 unicode 字符作为替换
- postgresql - TestContainers 和错误:“无法验证连接 org.postgresql.jdbc.PgConnection”(为所有测试类提升单个容器)
- php - 它不能正确使用目标黑色,如何在 html 中更正?
- reactjs - 如何修复反应路线的重定向?
- reactjs - 无法构建 iOS 项目。我们运行了“xcodebuild”命令,但它以错误代码 65 退出
- python - piecash 交易的日期时间格式
- reactjs - 使用 react-hook-form 同步 Checkbox 和 Switch