PostgreSQL के साथ आप इसके अलावा अन्य सभी खुले कनेक्शनों के बैकएंड पिड्स को वापस करने के लिए निम्नलिखित कथन जारी कर सकते हैं:
SELECT pid FROM pg_stat_activity where pid <> pg_backend_pid();
फिर आप इनमें से प्रत्येक बैकएंड को
. के साथ समाप्ति अनुरोध जारी कर सकते हैंSELECT pg_terminate_backend($1);
प्रत्येक pg_terminate_backend निष्पादन के लिए पहले कथन से लौटाए गए पिड्स को बांधना।
यदि अन्य कनेक्शन आपके जैसे उपयोगकर्ता का उपयोग नहीं कर रहे हैं, तो आपको सफलतापूर्वक टर्मिनेट जारी करने के लिए सुपरयूज़र के रूप में कनेक्ट करना होगा।
अद्यतन:टिप्पणियों को शामिल करना और Capistrano कार्य के रूप में व्यक्त करना:
desc "Force disconnect of open backends and drop database"
task :force_close_and_drop_db do
dbname = 'your_database_name'
run "psql -U postgres",
:data => <<-"PSQL"
REVOKE CONNECT ON DATABASE #{dbname} FROM public;
ALTER DATABASE #{dbname} CONNECTION LIMIT 0;
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE pid <> pg_backend_pid()
AND datname='#{dbname}';
DROP DATABASE #{dbname};
PSQL
end