Застой връща грешка 1213, която трябва да обработите от страна на клиента
Имайте предвид, че изчакването на безизходица и заключване са различни неща. В задънена улица няма „провалена“ транзакция:и двамата са виновни. Няма гаранция кой от тях ще бъде върнат назад.
Трябва да използвате rollback
, вашият стилов код ще вмъкне дубликат. например трябва да:
$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++;
}
}
Надявам се това да помогне.