Bagaimana saya bisa membunuh semua koneksi postgresql saya?
Saya mencoba rake db:drop
tetapi saya mendapatkan:
ERROR: database "database_name" is being accessed by other users
DETAIL: There are 1 other session(s) using the database.
Saya sudah mencoba mematikan proses yang saya lihat dari ps -ef | grep postgres
tetapi ini tidak berhasil:
kill: kill 2358 failed: operation not permitted
database
postgresql
DanS
sumber
sumber
Jawaban:
Anda dapat menggunakan pg_terminate_backend () untuk mematikan koneksi. Anda harus menjadi pengguna super untuk menggunakan fungsi ini. Ini bekerja pada semua sistem operasi yang sama.
Sebelum mengeksekusi kueri ini, Anda harus MENDAPATKAN KEMBALI hak istimewa CONNECT untuk menghindari koneksi baru:
sumber
sudo
tetap membunuh?sudo
dalam PG.REVOKE
langkah. Anda menyelamatkan seseorang, sekali lagi kurasa!Mungkin baru saja restart
postgres
=>sudo service postgresql restart
sumber
brew services restart postgresql
Jika Anda punya minumanDengan semua info tentang proses yang berjalan:
sumber
MacOS, jika postgresql diinstal dengan brew :
Sumber: Bunuh sesi / koneksi postgresql
sumber
OSX, Postgres 9.2 (diinstal dengan homebrew)
Jika datadir Anda berada di tempat lain, Anda dapat mencari tahu di mana datadirasinya dengan memeriksa hasilnya
ps aux | grep postgres
sumber
brew services restart postgresql
pg_ctl restart -D /usr/local/var/postgres
berhasil! (Saya bahkan tidak menjalankan perintah pertama atau ketiga).Ini sepertinya berfungsi untuk PostgreSQL 9.1:
Diangkat dari intisari ditemukan di sini dan di sini .
Berikut adalah versi modifikasi yang berfungsi untuk PostgreSQL 9.1 dan 9.2.
sumber
Saya menggunakan tugas menyapu berikut untuk menimpa
drop_database
metode Rails .lib/database.rake
Sunting: Ini untuk Postgresql 9.2+
sumber
pg_stat_activity.procpid
bukannyapg_stat_activity.pid
untuk Postgres 9.1 dan di bawah. Lihat stackoverflow.com/a/5408501/444774Cara yang lebih mudah dan lebih diperbarui adalah:
ps -ef | grep postgres
untuk menemukan koneksi #sudo kill -9 "#"
koneksiCatatan: Mungkin ada PID identik. Membunuh satu membunuh semua.
sumber
Saya memiliki masalah ini dan masalahnya adalah bahwa Navicat terhubung ke Postgres db lokal saya. Setelah saya memutus Navicat masalah menghilang.
EDIT:
Selain itu, sebagai upaya terakhir mutlak, Anda dapat mencadangkan data lalu menjalankan perintah ini:
... yang akan membunuh semua yang diakses oleh pengguna postgres. Hindari melakukan ini pada mesin produksi tetapi Anda seharusnya tidak memiliki masalah dengan lingkungan pengembangan. Sangat penting bahwa Anda memastikan setiap
postgres
proses benar-benar dihentikan sebelum mencoba me-restart PostgreSQL setelah ini.EDIT 2:
Karena pos unix.SE ini saya berubah dari
kill -9
menjadikill -15
.sumber
SAYA TELAH MEMENUHI CARA INI:
Di Windows8 64 bit saya, hanya
restart
layanan: postgresql-x64-9.5sumber
sumber
Hanya ingin menunjukkan bahwa Jawaban Haris mungkin tidak berfungsi jika beberapa proses latar belakang lainnya menggunakan database, dalam kasus saya itu adalah pekerjaan yang tertunda, saya lakukan:
Dan baru setelah itu saya bisa drop / reset database.
sumber
Keluar dari postgres dan mulai ulang. Sederhana, tetapi bekerja setiap saat untuk saya, di mana perintah cli lain terkadang tidak.
sumber
Tidak perlu menjatuhkannya. Hapus dan buat ulang skema publik. Dalam kebanyakan kasus ini memiliki efek yang persis sama.
sumber
Skenario jarak jauh. Tetapi jika Anda mencoba menjalankan tes di aplikasi rel, dan Anda mendapatkan sesuatu seperti
"ActiveRecord :: StatementInvalid: PG :: ObjectInUse: ERROR: database" myapp_test "sedang diakses oleh pengguna lain. RINCIAN: Ada 1 sesi lain menggunakan database."
Pastikan Anda menutup pgAdmin atau alat GUI postgres lainnya sebelum menjalankan tes.
sumber
Kasus:
Gagal menjalankan kueri:
Solusi:
a. Tampilkan kueri Aktivitas Status sebagai berikut:
b. Temukan baris tempat kolom 'Kueri' berisi:
c. Di baris yang sama, dapatkan nilai Kolom 'PID'
d. Jalankan skrip ini:
sumber
Saya menggunakan mac dan saya menggunakan postgres via
Postgres.app
. Saya memecahkan masalah ini hanya berhenti dan mulai lagi aplikasi.sumber
Buka PGadmin untuk melihat apakah ada halaman permintaan terbuka, tutup semua halaman permintaan dan putuskan server PostgresSQL dan Hubungkan lagi dan coba opsi hapus / jatuhkan. Ini membantu saya.
sumber
Di PG admin Anda dapat memutuskan koneksi server Anda (klik kanan pada server) & semua sesi akan terputus saat restart
sumber
Bagi saya bekerja sebagai berikut:
Saya menggunakan:
gitlab_edition: "gitlab-ce"
gitlab_version: '12 .4.0-ce.0.el7 '
sumber
Pertama, temukan Postgres yang menjalankan portnya
ps -ef | grep postgres
itu akan mengembalikan nomor port
bunuh -9
port_number
Akhirnya kembali mulai Postgres
sumber