क्योंकि, आप dropDb
execute को निष्पादित करने का प्रयास कर रहे हैं डेटाबेस पर कमांड, जिससे आपका खुला कनेक्शन है।
पोस्टग्रेज दस्तावेज़ीकरण के अनुसार:
यह समझ में आता है, क्योंकि जब आप पूरे डेटाबेस को छोड़ देते हैं, तो उस डेटाबेस को संदर्भित करने वाला सभी खुला कनेक्शन अमान्य हो जाता है, इसलिए अनुशंसित तरीका अलग-अलग डेटाबेस से कनेक्ट करना है, और इस कमांड को फिर से निष्पादित करना है।
यदि आप ऐसी स्थिति का सामना कर रहे हैं, जहां एक अलग क्लाइंट डेटाबेस से जुड़ा है, और आप वास्तव में डेटाबेस को छोड़ना चाहते हैं, तो आप उस विशेष डेटाबेस से सभी क्लाइंट को जबरन डिस्कनेक्ट कर सकते हैं।
उदाहरण के लिए, सभी क्लाइंट को डेटाबेस से जबरन डिस्कनेक्ट करने के लिए mydb
:
यदि PostgreSQL <9.2
SELECT pg_terminate_backend(procpid) FROM pg_stat_activity WHERE datname = 'mydb';
अन्य
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'mydb';
नोट: इस आदेश के लिए सुपरयुसर विशेषाधिकारों की आवश्यकता है।
फिर, आप विभिन्न डेटाबेस से जुड़ सकते हैं, और dropDb
run चला सकते हैं फिर से आदेश दें।