Een deadlock retourneert fout 1213 die u aan de clientzijde moet verwerken
Merk op dat een deadlock en lock wait verschillende dingen zijn. In een impasse is er geen "mislukte" transactie:ze zijn allebei schuldig. Er is geen garantie welke zal worden teruggedraaid.
U moet rollback
. gebruiken , uw stijlcode zal duplicaat invoegen. u moet bijvoorbeeld:
$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++;
}
}
Ik hoop dat dit helpt.