библиотека php mongodb abortTransaction не работает - PullRequest
0 голосов
/ 16 марта 2019

Я пытаюсь изучить транзакции mongodb с использованием библиотеки php-mongodb v1.5, но обнаружил некоторые проблемы.

Я пытался запустить, зафиксировать и прервать транзакцию, используя методы предоставления, но 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();

транзакция всегда фиксируется даже после действия отмены !!!

что мне не хватает здесь, пожалуйста, спасите мой день: (

1 Ответ

0 голосов
/ 18 марта 2019

транзакция всегда фиксируется даже после действия отмены

Это происходит потому, что операция удаления не использует объект session, который вы создали.Вам нужно передать session как $options параметр MongoDB \ Collection :: deleteOne () .В противном случае он будет выполнен за пределами транзакции.Например:

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

См. Также Транзакции MongoDB для получения дополнительной информации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...