Melepaskan Pangkalan Data Bersambung dalam Postgres
Anda mengalami ralat semasa cuba melepaskan pangkalan data yang anda sedang bersambung: "pq: tidak boleh menggugurkan pangkalan data yang sedang dibuka." Ralat ini berpunca daripada gelagat yang dijangkakan dalam Postgres, yang melarang pengguguran pangkalan data dengan sambungan aktif kepadanya.
Tingkah laku ini masuk akal kerana menjatuhkan pangkalan data membatalkan semua sambungan terbuka yang merujuknya. Untuk berjaya menggugurkan pangkalan data, anda mesti memastikan tiada sambungan aktif wujud.
Pendekatan Disyorkan
Pendekatan yang disyorkan ialah menyambung ke pangkalan data lain dan melaksanakan perintah DROP DATABASE daripada sambungan itu. Ini memastikan bahawa anda tidak mempunyai sebarang sambungan terbuka ke pangkalan data yang ingin anda lepaskan.
Memutuskan Sambungan Pelanggan Secara Paksa
Dalam situasi di mana pelanggan lain disambungkan ke pangkalan data anda perlu melepaskannya, anda boleh memutuskan sambungannya secara paksa. Ambil perhatian bahawa ini memerlukan keistimewaan superuser.
Untuk versi PostgreSQL sebelum 9.2:
SELECT pg_terminate_backend(procpid) FROM pg_stat_activity WHERE datname = 'mydb';
Untuk PostgreSQL versi 9.2 dan ke atas:
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'mydb';
Setelah semua pelanggan telah secara paksa terputus sambungan, anda boleh menyambung ke pangkalan data lain dan laksanakan perintah DROP DATABASE sekali lagi.
Nota Tambahan
Dalam contoh kod khusus anda, anda cuba menutup sambungan selepas melaksanakan arahan DROP DATABASE. Langkah ini tidak perlu dan boleh membawa kepada tingkah laku yang tidak dijangka. Hanya sambung ke pangkalan data lain sebelum melaksanakan perintah DROP DATABASE dan anda akan berjaya menutup sambungan ke pangkalan data yang telah anda lepaskan.
Atas ialah kandungan terperinci Bagaimana untuk Menggugurkan Pangkalan Data Postgres yang Anda Sambungkan Sekarang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!