के माध्यम से mysql पंक्ति लॉकिंग मैं अपने व्यापार के लिए एक वेब आधारित फॉर्म के साथ एक दोस्त की मदद कर रहा हूं। मैं इसे एकाधिक उपयोगकर्ताओं को संभालने के लिए तैयार करने की कोशिश कर रहा हूं। मैंने इसे सेट अप किया है ताकि संपादन के लिए रिकॉर्ड प्रदर्शित होने से ठीक पहले मैं निम्नलिखित कोड के साथ रिकॉर्ड लॉक कर रहा हूं।phs
$query = "START TRANSACTION;";
mysql_query($query);
$query = "SELECT field FROM table WHERE ID = \"$value\" FOR UPDATE;";
mysql_query($query);
(ठीक है कि बहुत सरल है लेकिन यह है कि mysql का सार है)
यह काम किया जाना प्रतीत नहीं होता है। हालांकि, जब मैं कमांड लाइन से mysql पर सीधे जाने, एक ही उपयोगकर्ता से लॉग इन और निष्पादित
START TRANSACTION;
SELECT field FROM table WHERE ID = "40" FOR UPDATE;
मैं प्रभावी रूप से वेब फार्म तक पहुँचने रिकॉर्ड "40" से ब्लॉक कर सकते हैं और समय समाप्ति चेतावनी मिलती है।
मैंने स्टार्ट ट्रांज़ेक्शन के बजाय BEGIN का उपयोग करने का प्रयास किया है। मैंने पहले SET AUTOCOMMIT = 0 करने और लॉकिंग के बाद लेनदेन शुरू करने का प्रयास किया है, लेकिन मैं PHP कोड से पंक्ति को लॉक नहीं कर सकता। चूंकि मैं कमांड लाइन से पंक्ति को लॉक कर सकता हूं, मुझे नहीं लगता कि डेटाबेस कैसे स्थापित किया गया है इसके साथ कोई समस्या है। मैं वास्तव में उम्मीद कर रहा हूं कि कुछ आसान कुछ है जो मैंने अपने पढ़ने में चूक गए हैं।
एफवाईआई, मैं एक्सएएमपीपी संस्करण 1.7.3 पर विकास कर रहा हूं जिसमें अपाचे 2.2.14, MySQL 5.1.41 और PHP 5.3.1 है।
अग्रिम धन्यवाद। यह मेरी पहली बार पोस्टिंग है लेकिन मैंने अतीत में इस साइट से बहुत सारे ज्ञान प्राप्त किए हैं।
आपने दूसरे mysql_query ($ query) के बाद क्या किया; ?अगर आपकी PHP स्क्रिप्ट बाहर निकलें, तो – PasteBT