【问题标题】:php mongodb library abortTransaction doest't workphp mongodb 库 abortTransaction 不起作用
【发布时间】:2019-03-16 17:24:09
【问题描述】:

我正在尝试使用 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();

即使在中止操作之后也始终提交事务!!!

我在这里缺少什么,请保存我的一天:(

【问题讨论】:

    标签: php mongodb transactions


    【解决方案1】:

    即使在中止操作之后也始终提交事务

    这是因为删除操作没有使用您已实例化的session 对象。您需要将session 作为$options 参数MongoDB\Collection::deleteOne() 传递。否则它将在事务之外执行。例如:

    $session->startTransaction();
    $this->db->users->deleteOne(
       ['_id' => new MongoDB\BSON\ObjectId('5c88e197df815495df201a38')], 
       ['session' => $session]
    );
    

    更多信息请参见MongoDB Transactions

    【讨论】:

      猜你喜欢
      • 2014-12-25
      • 1970-01-01
      • 1970-01-01
      • 2014-06-17
      • 1970-01-01
      • 2017-05-21
      • 2019-02-05
      • 1970-01-01
      相关资源
      最近更新 更多