Kebuntuan mengembalikan kesalahan 1213 yang harus Anda proses di sisi klien
Perhatikan bahwa deadlock dan lock wait adalah hal yang berbeda. Dalam kebuntuan, tidak ada transaksi "gagal":keduanya bersalah. Tidak ada jaminan mana yang akan dibatalkan.
Anda harus menggunakan rollback
, kode gaya Anda akan menyisipkan duplikat. misalnya Anda harus :
$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++;
}
}
Semoga membantu.