Karena, Anda mencoba menjalankan dropDb
perintah pada database, di mana Anda memiliki koneksi terbuka.
Menurut dokumentasi postgres:
Ini masuk akal, karena saat Anda menghapus seluruh database, semua koneksi terbuka yang merujuk ke database tersebut menjadi tidak valid, Jadi pendekatan yang disarankan adalah menyambungkan ke database yang berbeda, dan menjalankan perintah ini lagi.
Jika Anda menghadapi situasi, di mana klien yang berbeda terhubung ke database, dan Anda benar-benar ingin menghapus database, Anda dapat secara paksa memutuskan semua klien dari database tertentu.
Misalnya, untuk secara paksa memutuskan semua klien dari basis data mydb
:
Jika PostgreSQL <9.2
SELECT pg_terminate_backend(procpid) FROM pg_stat_activity WHERE datname = 'mydb';
Lain
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'mydb';
Catatan: Perintah ini membutuhkan hak pengguna super.
Kemudian, Anda dapat terhubung ke database yang berbeda, dan menjalankan dropDb
perintah lagi.