postgresql - usuarios - error: no se puede eliminar la base de datos activa
Postgresql: no se puede eliminar la base de datos debido a algunas conexiones automáticas con DB (6)
Cada vez que intento eliminar la base de datos obtengo:
ERROR: database "pilot" is being accessed by other users
DETAIL: There is 1 other session using the database.
Primero, debe revocar
REVOKE CONNECT ON DATABASE TARGET_DB FROM public;
Luego usa:
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = ''TARGET_DB'';
Seguramente funcionará.
Cada vez que intento eliminar la base de datos obtengo:
ERROR: database "pilot" is being accessed by other users
DETAIL: There is 1 other session using the database.
Cuando uso:
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = ''TARGET_DB'';
Terminé la conexión desde ese DB, pero si intento eliminar la base de datos después de eso, de alguna manera, alguien se conecta automáticamente a esa base de datos y muestra este error. ¿Qué podría estar haciendo eso? Nadie usa esta base de datos, excepto yo.
Encontré una solución para este problema intente ejecutar este comando en la terminal
ps -ef | grep postgres
matar proceso por este comando
sudo kill -9 PID
Puede evitar conexiones futuras:
REVOKE CONNECT ON DATABASE thedb FROM public;
(y posiblemente otros usuarios / roles; vea /l+
en psql
)
A continuación, puede finalizar todas las conexiones a esta base de datos, excepto la suya:
SELECT pid, pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = current_database() AND pid <> pg_backend_pid();
En versiones anteriores, pid
se llamaba procpid
así que tendrás que lidiar con eso.
Como ha revocado los derechos de CONNECT
, lo que estaba tratando de conectarse automáticamente ya no podría hacerlo.
Ahora podrá soltar la base de datos.
Esto no funcionará si está utilizando conexiones de superusuario para operaciones normales, pero si lo hace, primero debe solucionar ese problema.
Si no hay un impacto potencial en otros servicios en su máquina, simplemente service postgresql restart
Significa que otro usuario está accediendo a la base de datos ... Simplemente, reinicie el postgresql. Este comando hará el truco
root@kalilinux:~#sudo service postgresql restart
Luego, intente eliminar la base de datos:
postgres=# drop database accment_revamp
Esto hará el truco. Feliz codificación
Simplemente revisa cuál es la conexión, de dónde viene. Puedes ver todo esto en:
select * from pg_stat_activity where datname = ''TARGET_DB'';
Tal vez es tu conexión?