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
Lepaskan: 2024-11-19 10:28:02
asal
491 orang telah melayarinya

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
Salin selepas log masuk

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()
Salin selepas log masuk

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';
Salin selepas log masuk

Untuk Postgres versi 9.2 dan ke atas:

SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'mydb';
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan