Ein Deadlock gibt den Fehler 1213 zurück, den Sie auf der Client-Seite bearbeiten sollten
Beachten Sie, dass ein Deadlock und ein Lock-Wait verschiedene Dinge sind. In einem Deadlock gibt es keine "fehlgeschlagene" Transaktion:Sie sind beide schuldig. Es gibt keine Garantie, welche zurückgesetzt wird.
Sie müssen rollback
verwenden , wird Ihr Stilcode doppelt eingefügt. zum Beispiel sollten Sie:
$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++;
}
}
Hoffe, das hilft.