यह एक सामान्य उत्तर है, और उसकेोकू के लिए विशिष्ट नहीं है। आम तौर पर, किसी क्वेरी को रद्द करने के लिए उपयोगकर्ता को पोस्टग्रेस सर्वर या पोस्टग्रेज़ डेटाबेस में सुपरसियर एक्सेस की आवश्यकता हो सकती है - ऐसा लगता है कि एक नियमित उपयोगकर्ता अपनी डीबीए या सिसडमिन को सहायता के लिए अपनी डीबीए या सिसडमिन पूछे बिना अपनी क्वेरी प्रक्रिया को मार नहीं सकता
इस एसक्यूएल चलाकर पीआईडी खोजें:
SELECT procpid,* from pg_stat_activity
WHERE current_query<>'<IDLE>' ORDER BY xact_start;
आप पहली बार (बाएं) कॉलम में procpid मिल जाएगा, और पहले (ऊपर) पंक्ति क्वेरी आप 'होने की संभावना है डी समाप्त करना पसंद है। मुझे लगता है कि पिड नीचे 1234 है।
आप एसक्यूएल के माध्यम से क्वेरी रद्द कर सकते हैं (यानी खोल उपयोग के बिना, लेकिन आप शायद डेटाबेस के लिए सुपर उपयोगकर्ता पहुंच की आवश्यकता है):
select pg_cancel_backend(1234);
यह "सॉफ्ट" तरीका है ... क्वेरी नहीं होगा तुरंत गायब हो जाओ।
kill -INT 1234
अगर वह मदद नहीं करता है, का उपयोग करें:
select pg_terminate_backend(1234);
आप खोल पहुँच है, तो आप भी खोल से यह कर सकते हैं:
अगर आप जल्दी में हैं, तो यह एक कोशिश
kill 1234
नहीं है:
kill -9 1234
... जो अक्सर पूरे पोस्टग्रेस सर्वर में आग लगने का परिणाम होगा, फिर आप पोस्टग्रेस को पुनरारंभ भी कर सकते हैं। Postgres बहुत मजबूत है, इसलिए डेटा दूषित नहीं किया जाएगा, लेकिन मैं का उपयोग कर "को मारने -9" किसी भी मामले ;-)
में के खिलाफ की सलाह देते हैं "लेन-देन में निष्क्रिय" का मतलब है कि लेन-देन नहीं था एक "प्रतिबद्ध" या "रोलबैक" के साथ समाप्त हुआ, जिसका अर्थ है कि एप्लिकेशन छोटी है या लेनदेन संबंधी डेटाबेस के साथ काम करने के लिए ठीक तरह से डिज़ाइन नहीं किया गया है। दीर्घकालिक "लेनदेन में निष्क्रिय" से बचा जाना चाहिए, क्योंकि यह भी प्रमुख प्रदर्शन समस्याओं का कारण बन सकता है।आप here पा सकते हैं इस बारे में
select pg_terminate_backend(pid int)
अधिक:
हो सकता है कि सवाल "जब postgres सर्वर और न ही डेटाबेस के लिए सुपर उपयोगकर्ता पहुँच के लिए न तो रूट पहुँच होने कैसे मैं अपने ही क्वेरी समाप्त है" के लिए rephrased किया जाना चाहिए। यह वास्तव में एक बहुत अच्छा सवाल लगता है ... और मुझे जवाब नहीं पता। – tobixen