Zablokování vrátí chybu 1213, kterou byste měli zpracovat na straně klienta
Všimněte si, že zablokování a čekání na zámek jsou různé věci. V patové situaci neexistuje žádná „neúspěšná“ transakce:vinni jsou oba. Neexistuje žádná záruka, která z nich bude vrácena zpět.
Musíte použít rollback
, váš kód stylu vloží duplikát. například byste měli:
$retry = 0;
$done = false;
$this->entityManager->getConnection()->beginTransaction(); // suspend auto-commit
while (!$done and $retry < 3) {
try {
$this->entityManager->flush();
$this->entityManager->getConnection()->commit(); // commit if succesfull
$done = true;
} catch (\Exception $e) {
$this->entityManager->getConnection()->rollback(); // transaction marked for rollback only
$retry++;
}
}
Doufám, že to pomůže.