Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да опитам отново транзакция след безизходица с помощта на Doctrine?

Застой връща грешка 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++;

    }

}

Надявам се това да помогне.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проста UPDATE MySQl таблица от php масив

  2. Как да променя референтното действие на външния ключ? (поведение)

  3. Как да използвам MySQL Found_Rows() в PHP?

  4. Как да избегнем ремонт с Keycache?

  5. Заявка точки в рамките на даден радиус в MySQL