Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara mencoba kembali transaksi setelah kebuntuan menggunakan Doctrine?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mencadangkan Database MySQL Moodle Anda

  2. Terapkan ORDER BY pada UNION (Mysql)

  3. kirim data ke MySQL dengan AJAX + jQuery + PHP

  4. hibernasi kesalahan kueri SQL asli

  5. Beberapa Klausa ATAU di MySQL