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

PDO::commit () सफलता या विफलता

मुख्य भाग है पीडीओ को अपवाद मोड में सेट करना, जबकि केवल रोलबैक करने के लिए ट्राइ-कैच होना अनावश्यक है। इस प्रकार, आपका कोड बिल्कुल ठीक है, यदि आप चाहते हैं कि विफलता पर रोलबैक हो तो इसे बदलने की कोई आवश्यकता नहीं है, जब तक आपके पास यह लाइन कहीं है:

$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); 

विफलता के मामले में स्क्रिप्ट को समाप्त कर दिया जाएगा, कनेक्शन बंद कर दिया जाएगा और MySQL आपके लिए लेनदेन को वापस करने में प्रसन्न होगा।

यदि आप अभी भी मैन्युअल रूप से रोलबैक करना चाहते हैं, तो आपको इसे ठीक से करना चाहिए, जैसा कि अन्य उत्तरों में कहा गया है। सुनिश्चित करें कि

  • आप Exception को पकड़ रहे हैं , नहीं PDOException , क्योंकि इससे कोई फ़र्क नहीं पड़ता कि किस विशेष अपवाद ने निष्पादन को निरस्त कर दिया
  • आप फिर से फेंक रहे हैं रोलबैक के बाद एक अपवाद, समस्या के बारे में सूचित करने के लिए
  • यह भी कि एक टेबल इंजन लेनदेन का समर्थन करता है (यानी मैसकल के लिए यह इनो डीबी होना चाहिए, माईसाम नहीं)।

यह चेकलिस्ट मेरे लेख से ली गई है जो आपको इस या कई अन्य पहलुओं में भी उपयोगी लग सकता है।



  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 और PHP

  2. MySQL:VARCHAR(255) के बजाय VARCHAR(20) का उपयोग क्यों करें?

  3. विक्रेताओं और खरीदारों से मेल खाने के लिए SQL क्वेरी

  4. वाईआई सीडीबीकनेक्शन डीबी कनेक्शन खोलने में विफल रहा:गूगल क्लाउड एसक्यूएल के साथ ड्राइवर नहीं मिल सका

  5. मैं mysql jdbc jar कहाँ से डाउनलोड कर सकता हूँ?