Rumah >pembangunan bahagian belakang >Golang >Mengapa Saya Tidak Boleh Menggugurkan Pangkalan Data Terbuka dalam Postgres?

Mengapa Saya Tidak Boleh Menggugurkan Pangkalan Data Terbuka dalam Postgres?

Patricia Arquette
Patricia Arquetteasal
2024-11-19 10:28:02500semak imbas

Why Can't I Drop an Open Database in Postgres?

Masalah Menggugurkan Pangkalan Data Terbuka dalam Postgres

Ralat Ditemui

Apabila cuba menggugurkan pangkalan data, anda mungkin menghadapi ralat:

pq: cannot drop the currently open database

Memahami Isu

Ralat ini berlaku kerana anda cuba menggugurkan pangkalan data yang sedang anda sambungkan. Menggugurkan pangkalan data membatalkan semua sambungan terbuka kepadanya, termasuk yang anda gunakan.

Penyelesaian Disyorkan

Untuk menyelesaikan isu ini, disyorkan untuk menyambung ke pangkalan data lain dan laksanakan DROP DATABASE perintah dari sana. Ini memastikan bahawa anda mempunyai sambungan aktif untuk melaksanakan arahan sambil mengelakkan isu dengan menjatuhkan pangkalan data semasa.

Contoh Kod:

// Connect to a secondary database
otherDbConn, err := sql.Open("postgres", "host=localhost port=5432 user=username dbname=otherdb")
if err != nil {
  return err
}

// Execute DROP DATABASE command on other database
_, err = otherDbConn.Exec(fmt.Sprintf(`DROP DATABASE %s;`, dbName))
if err != nil {
  return err
}

// Close the connection to the other database
otherDbConn.Close()

Penyelesaian Alternatif: Pemutusan Sambungan Pelanggan Secara Paksa

Jika anda tidak boleh menyambung ke pangkalan data lain atau memilih untuk tidak melakukannya, anda boleh memutuskan sambungan semua pelanggan secara paksa daripada pangkalan data yang ingin anda lepaskan. Ini memerlukan keistimewaan superuser dan harus digunakan dengan berhati-hati.

Untuk versi Postgres di bawah 9.2:

SELECT pg_terminate_backend(procpid) FROM pg_stat_activity WHERE datname = 'mydb';

Untuk Postgres versi 9.2 dan ke atas:

SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'mydb';

Selepas secara paksa memutuskan sambungan semua pelanggan, anda boleh menyambung ke pangkalan data yang berbeza dan melaksanakan DROP DATABASE perintah.

Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Menggugurkan Pangkalan Data Terbuka dalam Postgres?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn