यदि आप INNODB का उपयोग कर रहे हैं:
यदि आप INNODB का उपयोग कर रहे हैं, क्योंकि आपने सत्यापित किया है कि पंक्ति डाली गई थी, तो इसे SELECT के साथ वापस कर दिया जाना चाहिए था, जब तक कि चयन वास्तविक पंक्ति की कुंजी को क्वेरी कर रहा था जिसे डाला गया था। (क्या आप सुनिश्चित हैं कि आप INSERT DELAYED जैसी सुविधा का उपयोग नहीं कर रहे हैं? यह पंक्ति को वापस आने से रोक सकता है।)
यदि आप माईसाम का उपयोग कर रहे हैं:
चूंकि माईसाम लेन-देन का समर्थन नहीं करता है, चयन को सम्मिलन वापस करना चाहिए, लेकिन मुझे ऐसा कुछ भी नहीं मिला जो बताता है कि यह वास्तव में गारंटीकृत है।
नोट:नीचे सूचीबद्ध पहला URL बताता है कि यदि आप MYISAM (इस लिंक के अनुसार डिफ़ॉल्ट) का उपयोग कर रहे हैं, तो INSETS तालिका को लॉक कर देगा। हालांकि, दूसरा यूआरएल बताता है कि एक इंसर्ट द्वारा रखा गया लॉक एक पठनीय लॉक है, जिससे टेबल को पढ़ने से रोका नहीं जाना चाहिए था।
http://www.sitepoint.com/mysql-mistakes-php-developers/
http://aarklondatabasetrivia .blogspot.com/2009/04/how-to-lock-and-unlock-tables-in-mysql.html
यदि आप INNODB का उपयोग कर रहे हैं (जारी रखें):
- यदि आपके सिस्टम में AUTOCOMMIT उपयोग में है (मुझे यकीन नहीं है) तो आपको चयनित पंक्ति देखनी चाहिए थी (यह प्रश्न बताता है कि डाली गई पंक्ति को डेटाबेस में जोड़े जाने के रूप में सत्यापित किया गया था)।
- यदि कोई लेन-देन उपयोग में है, तो लेन-देन अवश्य किया गया होगा (यह प्रश्न बताता है कि डाली गई पंक्ति को डेटाबेस में जोड़े जाने के रूप में सत्यापित किया गया था)।
क्या आप सुनिश्चित हैं कि पहली बार निष्पादित की जाने वाली SELECT क्वेरी वही है जो दूसरी बार निष्पादित की जाती है?
क्या आप सुनिश्चित हैं $user['social_id']
INSERT के बाद और चयन के समय समान मान है?
- यदि आप किसी अन्य लेन-देन में सम्मिलित एक पंक्ति का उल्लेख कर रहे हैं, तो उस सत्र के बजाय जो सम्मिलित कर रहा है, तो यह URL:
http://blogs. innodb.com/wp/2011/04/get-started-with-innodb-memcached-daemon-plugin/
कहता है "आपको केवल सम्मिलित पंक्तियों को खोजने के लिए "अनकमिटेड पढ़ें" का चयन करना होगा:"
अर्थात। सेट सत्र लेन-देन अलगाव स्तर बिना पढ़े पढ़ा;
http://dev.mysql.com/doc/refman /5.0/hi/set-transaction.html
(यह सुविधा उपयोग में आने वाले MYSQL के संस्करण पर निर्भर हो सकती है)
- यदि, किसी कारण से, आप INSERT DELAYED का उपयोग कर रहे हैं, तो पंक्ति वापस नहीं की जा सकती है
नोट:इस URL के अनुसार, यदि आपने कोई लेन-देन शुरू किया है, तो चयनित पंक्तियाँ अगले SELECT स्टेटमेंट (PHP में नहीं) में दिखाई जाती हैं:
http://zetcode.com/databases/mysqltutorial/transactions/
इस कथन का तात्पर्य है कि यदि आप कोई लेन-देन शुरू करते हैं, तो आपको AUTOCOMMIT सेट करने की आवश्यकता नहीं है:
"MySQL भी स्वचालित रूप से ऐसे बयान देता है जो लेनदेन का हिस्सा नहीं हैं।"
यह यूआरएल PHP में लेनदेन शुरू करने का तरीका बताता है: