Saya mencoba untuk menjatuhkan database saya dan membuat yang baru melalui baris perintah.
Saya masuk menggunakan psql -U username
dan kemudian melakukan \connect template1
, diikuti oleh a DROP DATABASE databasename;
.
Saya mendapatkan kesalahan
databasename database sedang diakses oleh pengguna lain
Saya mematikan Apache dan mencoba ini lagi tapi saya masih mendapatkan kesalahan ini. Apakah saya melakukan sesuatu yang salah?
database
postgresql
iman453
sumber
sumber
dropdb databasename
perintah dari baris perintah?psql -U <user> -c "drop database protodb"
(tanpa nama basis data)drop database <dataabase_name>;
Jangan lupakan koma.Jawaban:
Anda dapat menjalankan perintah dropdb dari baris perintah:
Perhatikan bahwa Anda harus menjadi pengguna super atau pemilik basis data untuk dapat menjatuhkannya.
Anda juga dapat memeriksa tampilan pg_stat_activity untuk melihat jenis aktivitas apa yang sedang berlangsung terhadap database Anda, termasuk semua proses idle.
sumber
dropuser
perintah untuk menghapus juga pengguna.\l
untuk melihat semua database yang Anda miliki.Ini bekerja untuk saya:
untuk postgresql lebih awal dari 9,2 ganti
pid
denganprocpid
http://blog.gahooa.com/2010/11/03/how-to-force-drop-a-postgresql-database-by-killing-off-connection-processes/
sumber
select pg_terminate_backend(pid) from pg_stat_activity where datname='YourDatabase';
column "procpid" does not exist
untuk amazon RDS postgres 9.6 misalnyaCoba ini. Catatan tidak ada database yang ditentukan - hanya berjalan "di server"
Jika itu tidak berhasil, saya telah melihat masalah dengan postgres memegang pernyataan siap yatim.
Untuk membersihkannya, lakukan ini:
lalu untuk setiap id yang Anda lihat, jalankan ini:
sumber
Ketika dikatakan pengguna terhubung, apa yang query "pilih * dari pg_stat_activity;" mengatakan? Apakah pengguna lain selain Anda sekarang terhubung? Jika demikian, Anda mungkin harus mengedit file pg_hba.conf Anda untuk menolak koneksi dari pengguna lain, atau mematikan aplikasi apa pun yang mengakses database pg agar dapat menjatuhkannya. Saya punya masalah ini kadang-kadang dalam produksi. Set pg_hba.conf untuk memiliki dua baris seperti ini:
dan beri tahu pgsql untuk memuat ulang atau memulai kembali (yaitu sudo /etc/init.d/postgresql memuat ulang atau pg_ctl memuat ulang) dan sekarang satu-satunya cara untuk terhubung ke mesin Anda adalah melalui soket lokal. Saya berasumsi Anda menggunakan linux. Jika tidak, ini mungkin perlu disesuaikan dengan sesuatu selain lokal / ident pada baris pertama itu, ke sesuatu seperti host ... nama pengguna Anda.
Sekarang Anda harus dapat melakukan:
sumber