पोस्टग्रेएसक्यूएल का कौन सा संस्करण आप चल रहे हैं? निम्नलिखित 8.1.8 या बाद में मानता है (यह पहले के संस्करणों पर भी लागू हो सकता है, मुझे नहीं पता)।
मुझे लगता है कि आपका मतलब है कि phpPgAdmin का समय समाप्त हो गया है - PostgreSQL बैकएंड तब तक ले जाएगा जब तक कोई क्वेरी/अपडेट पूरा नहीं होता है। उस स्थिति में, यह संभव है कि मूल सत्र अभी भी जिंदा है और अद्यतन क्वेरी अभी भी चल रही है। मैं निम्न क्वेरी मशीन है कि PostgreSQL सर्वर प्रक्रिया होस्ट करता है, पर (chapter 24 of the PostgreSQL docs से लिया गया) चलाने की सलाह देते देखने के लिए कि सत्र अभी भी जीवित है:
ps auxwww|grep ^postgres
कई पंक्तियों दिखाई देनी चाहिए: 1 postmaster
मास्टर की प्रक्रिया के लिए, और "लेखक", "आंकड़े बफर", और "आंकड़े संग्रहकर्ता" प्रक्रियाओं के लिए प्रत्येक 1। कोई भी शेष रेखाएं डीबी कनेक्शन की सेवा करने वाली प्रक्रियाओं के लिए हैं। इन पंक्तियों में उपयोगकर्ता नाम और डेटाबेस नाम होगा।
उम्मीद है कि, आप देख सकते हैं कि आपने जिस सत्र में मूल अद्यतन किया है वह अभी भी लटक रहा है या नहीं। यद्यपि सिद्धांत में आप सिस्टम दृश्य pg_stat_activity
से SELECT
आईएन द्वारा अधिक विस्तृत जानकारी प्राप्त कर सकते हैं, डिफ़ॉल्ट रूप से PostgreSQL को सबसे उपयोगी फ़ील्ड (जैसे current_query
और query_start
) को पॉप्युलेट करने के लिए सेट नहीं किया गया है। भविष्य में इसे सक्षम करने के लिए अध्याय 24 देखें।
यदि आप देखते हैं कि सत्र अभी भी है, तो इसे मार दें। उपयोगकर्ता को प्रक्रिया चलाने के दौरान लॉग इन करने की आवश्यकता होगी (आमतौर पर postgres
) या ऐसा करने के लिए रूट - यदि आप स्वयं सर्वर नहीं चलाते हैं, तो अपने डीबीए को यह करने के लिए प्राप्त करें।
एक और बात: एक तालिका में पंक्तियों को अद्यतन करने के लिए, PostgreSQL ताले का उपयोग से बचाता है। इसके बजाए, यह प्रत्येक लेखन लेनदेन को डीबी का एक नया "संस्करण" बनाने की अनुमति देता है, जो लेनदेन के दौरान "वर्तमान संस्करण" बन जाता है, बशर्ते यह अन्य लेनदेन के दौरान किए गए अपडेट के साथ संघर्ष न करे। तो मुझे संदेह है कि आप जो "लटकते हुए" देख रहे हैं वह किसी और चीज के कारण होता है - हालांकि, मुझे यकीन नहीं है। (क्या आपने स्पष्ट चीजों की जांच की है, जैसे डीबी युक्त डिस्क विभाजन भरा हुआ है?)
स्रोत
2009-06-30 11:32:04
उत्कृष्ट, यह काम किया, धन्यवाद। ध्यान दें कि जब मैंने उस समस्या को मार दिया जो समस्या पैदा कर रहा था, जिसने कुछ अन्य प्रक्रियाओं को चलाने की अनुमति दी जो लॉक को रिलीज़ करने की प्रतीक्षा कर रहे थे। इससे कुछ और समस्याएं हुईं। जब मैंने पहली समस्या प्रक्रिया को मारने से पहले ps auxwww | grep^postgres चलाया तो मुझे "प्रतीक्षा" चिह्नित प्रक्रियाओं को मारना चाहिए था। – Liam
खुशी मैं मदद कर सकता हूं :) –
"यदि आप देखते हैं कि सत्र अभी भी है, तो इसे मार दें।" - नए लोगों के लिए, यह कहां कहता है कि 'पोस्टग्रेस 15398 ... लेनदेन में निष्क्रिय' या जो कुछ भी और पुटी में '15398 मार डालो' टाइप करें। – Noumenon