En deadlock returnerer fejl 1213, som du skal behandle på klientsiden
Bemærk, at en deadlock og låsevent er forskellige ting. I et dødvande er der ingen "mislykket" transaktion:de er begge skyldige. Der er ingen garanti for, hvilken der vil blive rullet tilbage.
Du skal bruge rollback
, vil din stilkode indsætte duplikat. for eksempel skal du :
$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++;
}
}
Håber dette hjælper.