Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Menggugurkan Pangkalan Data PostgreSQL yang Disambungkan Pada Masa Ini?
Apabila cuba menggugurkan pangkalan data yang sedang anda sambungkan dalam Postgres, anda mungkin menghadapi ralat berikut:
pq: cannot drop the currently open database
Ralat ini timbul kerana kejatuhan pangkalan data memerlukan sambungan tertutup ke pangkalan data yang dialih keluar. Kekeliruan terletak pada ketidakupayaan untuk melaksanakan DROP DATABASE menggunakan dbConn.Exec jika sambungan ditutup.
Pendekatan yang disyorkan untuk menggugurkan pangkalan data yang sedang disambungkan adalah dengan menyambung ke pangkalan data yang berbeza dan laksanakan arahan DROP DATABASE dari sana. Ini kerana sambungan kepada pangkalan data yang digugurkan menjadi tidak sah apabila pemadamannya.
Contohnya:
import "github.com/lib/pq" ... func dropDatabase(dbName string) error { // Connect to a different database (e.g., template1) otherConn, err := pq.Open("other_conn_string") if err != nil { return err } defer otherConn.Close() // Drop the desired database from the other connection _, err = otherConn.Exec(fmt.Sprintf(`DROP DATABASE %s;`, dbName)) return err }
Dalam senario di mana pelanggan yang berbeza disambungkan ke pangkalan data yang digugurkan dan anda memerlukan penyingkiran segera, anda boleh memutuskan sambungan semua pelanggan secara paksa daripada pangkalan data sasaran menggunakan arahan berikut (keperluan berbeza-beza bergantung pada versi PostgreSQL):
-- PostgreSQL < 9.2 SELECT pg_terminate_backend(procpid) FROM pg_stat_activity WHERE datname = 'mydb'; -- PostgreSQL >= 9.2 SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'mydb';
Nota: Jalankan arahan ini dengan keistimewaan superuser. Setelah pelanggan diputuskan sambungan secara paksa, anda boleh menyambung ke pangkalan data lain dan melaksanakan perintah DROP DATABASE.
Atas ialah kandungan terperinci Bagaimana untuk Menggugurkan Pangkalan Data PostgreSQL yang Disambungkan Pada Masa Ini?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!