Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

सिद्धांत का उपयोग करके गतिरोध के बाद लेनदेन का पुन:प्रयास कैसे करें?

एक गतिरोध रिटर्न एरर 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. एक MySQL तालिका, सूचकांक और डेटा को डुप्लिकेट करना

  2. MySQL क्वेरी आइटम खींचने के लिए, लेकिन हमेशा शीर्ष पर एक निश्चित दिखाएं

  3. रिमोट सर्वर, आईफोन पर चित्र अपलोड करना

  4. दो तिथियों के बीच आउटपुट mysql

  5. 2 तिथियों के बीच खाली होने पर भी खाली पंक्तियाँ उत्पन्न करें