यह एक सामान्य पोस्टग्रेज उत्तर है, और हरोकू के लिए विशिष्ट नहीं है
(इस सवाल का सरल-बेवकूफ़ जवाब हो सकता है ... बस पोस्टग्रेजल को फिर से शुरू करें। मान लें कि यह वांछनीय नहीं है या विकल्प नहीं है ...)
इस sql को चलाकर PID खोजें:
SELECT pid , query, * from pg_stat_activity
WHERE state != 'idle' ORDER BY xact_start;
(क्वेरी को पोस्टग्रेज के संस्करण पर निर्भर होने की आवश्यकता हो सकती है - अंततः, बस pg_stat_activity से * का चयन करें)। आप पहले (बाएं) कॉलम में pid पाएंगे, और पहली (शीर्ष) पंक्ति वह क्वेरी होने की संभावना है जिसे आप समाप्त करना चाहते हैं। मुझे लगता है कि नीचे पिड 1234 है।
जब तक यह आपकी या आपके पास सुपर उपयोगकर्ता की पहुंच हो, तब तक आप SQL के माध्यम से एक क्वेरी रद्द कर सकते हैं (अर्थात शेल एक्सेस के बिना)।
select pg_cancel_backend(1234);
यह 1234-क्वेरी को रद्द करने के लिए "मैत्रीपूर्ण" अनुरोध है, और कुछ भाग्य के साथ यह थोड़ी देर बाद गायब हो जाएगा। आखिरकार, यह अधिक कुशल है:
select pg_terminate_backend(1234);
यदि आपके पास शेल एक्सेस और रूट है या अनुमतियाँ पोस्ट करता है, तो आप इसे शेल से भी कर सकते हैं। "रद्द" करने के लिए कोई भी कर सकता है:
kill -INT 1234
और "समाप्त" करने के लिए, बस:
kill 1234
ऐसा न करें:
kill -9 1234
... जिसके परिणामस्वरूप अक्सर पूरे पोस्टग्रेज सर्वर को आग की लपटों में नीचे जाना होगा, फिर आप पोस्टग्रेट्स को फिर से शुरू कर सकते हैं। Postgres बहुत मजबूत है, इसलिए डेटा दूषित नहीं होगा, लेकिन मैं किसी भी मामले में "किल -9" का उपयोग करने के खिलाफ सलाह दूंगा :-)
एक लंबे समय तक चलने वाले "लेन-देन में निष्क्रिय" का अर्थ है कि लेनदेन को "कमिट" या "रोलबैक" के साथ समाप्त नहीं किया गया था, जिसका अर्थ है कि आवेदन छोटी गाड़ी है या लेन-देन डेटाबेस के साथ काम करने के लिए ठीक से डिज़ाइन नहीं किया गया है। लंबे समय तक चलने वाले "निष्क्रिय लेन-देन" से बचा जाना चाहिए, क्योंकि इससे प्रदर्शन की बड़ी समस्याएं भी हो सकती हैं।