Ett dödläge returnerar fel 1213 som du bör bearbeta på klientsidan
Observera att låsning och låsning är olika saker. I ett dödläge finns det ingen "misslyckad" transaktion:de är båda skyldiga. Det finns ingen garanti för vilken som kommer att återställas.
Du måste använda rollback
, kommer din stilkod att infoga dubblett. till exempel bör 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++;
}
}
Hoppas detta hjälper.