¿Cómo puedo eliminar todas mis conexiones postgresql?
Estoy intentando un rake db:drop
pero me sale:
ERROR: database "database_name" is being accessed by other users
DETAIL: There are 1 other session(s) using the database.
Intenté cerrar los procesos que veo desde a ps -ef | grep postgres
pero esto tampoco funciona:
kill: kill 2358 failed: operation not permitted
database
postgresql
DanS
fuente
fuente
Respuestas:
Puede usar pg_terminate_backend () para eliminar una conexión. Tienes que ser superusuario para usar esta función. Esto funciona en todos los sistemas operativos de la misma manera.
Antes de ejecutar esta consulta, debe REVOCAR los privilegios CONNECT para evitar nuevas conexiones:
fuente
sudo
matado de todas formas?sudo
en PG.REVOKE
paso. ¡Salvaste a alguien, una vez más, supongo!Tal vez solo reiniciar
postgres
=>sudo service postgresql restart
fuente
brew services restart postgresql
si hasCon toda la información sobre el proceso de ejecución:
fuente
MacOS, si postgresql se instaló con brew :
Fuente: matar una sesión / conexión postgresql
fuente
OSX, Postgres 9.2 (instalado con homebrew)
Si su datadir está en otro lugar, puede averiguar dónde está examinando la salida de
ps aux | grep postgres
fuente
brew services restart postgresql
pg_ctl restart -D /usr/local/var/postgres
hizo el truco! (Ni siquiera ejecuté el primer o tercer comando).Esto parece estar funcionando para PostgreSQL 9.1:
Levantado de lo esencial encontrado aquí y aquí .
Aquí hay una versión modificada que funciona tanto para PostgreSQL 9.1 como para 9.2.
fuente
Utilizo la siguiente tarea de rastrillo para anular el
drop_database
método Rails .lib/database.rake
Editar: Esto es para Postgresql 9.2+
fuente
pg_stat_activity.procpid
lugar depg_stat_activity.pid
Postgres 9.1 y versiones posteriores. Ver stackoverflow.com/a/5408501/444774La forma más fácil y actualizada es:
ps -ef | grep postgres
para encontrar la conexión #sudo kill -9 "#"
de la conexiónNota: Puede haber un PID idéntico. Matar a uno mata a todos.
fuente
Tuve este problema y el problema era que Navicat estaba conectado a mi base de datos local de Postgres. Una vez que desconecté Navicat, el problema desapareció.
EDITAR:
Además, como último recurso absoluto, puede hacer una copia de seguridad de sus datos y luego ejecutar este comando:
... que matará todo lo que el usuario postgres está accediendo. Evite hacer esto en una máquina de producción, pero no debería tener problemas con un entorno de desarrollo. Es vital que se asegure de que todos los
postgres
procesos realmente hayan terminado antes de intentar reiniciar PostgreSQL después de esto.EDITAR 2:
Debido a esta publicación de Unix.SE , he cambiado de
kill -9
akill -15
.fuente
He resuelto de esta manera:
En mi Windows8 64 bit, solo
restart
ing el servicio: postgresql-x64-9.5fuente
fuente
Solo quería señalar que la respuesta de Haris podría no funcionar si algún otro proceso en segundo plano está utilizando la base de datos, en mi caso fueron trabajos retrasados, lo hice:
Y solo entonces pude soltar / restablecer la base de datos.
fuente
Salga de postgres y reinícielo. Simple, pero siempre funciona para mí, donde otros comandos cli a veces no.
fuente
No hay necesidad de soltarlo. Simplemente elimine y vuelva a crear el esquema público. En la mayoría de los casos, esto tiene exactamente el mismo efecto.
fuente
Escenario remoto Pero si está intentando ejecutar pruebas en una aplicación de rieles, y obtiene algo como
"ActiveRecord :: StatementInvalid: PG :: ObjectInUse: ERROR: otros usuarios acceden a la base de datos" myapp_test "DETALLE: Hay otra sesión con la base de datos".
Asegúrese de cerrar pgAdmin o cualquier otra herramienta GUI de postgres antes de ejecutar las pruebas.
fuente
Caso:
Error al ejecutar la consulta:
Solución:
a. Muestra la actividad de estado de la consulta de la siguiente manera:
si. Buscar fila donde la columna 'Consulta' contiene:
C. En la misma fila, obtenga el valor de la columna 'PID'
re. Ejecute estos scripts:
fuente
Estoy en una Mac y uso postgres vía
Postgres.app
. Resolví este problema simplemente saliendo y comenzando de nuevo la aplicación.fuente
Abra PGadmin para ver si hay alguna página de consulta abierta, cierre todas las páginas de consulta y desconecte el servidor PostgresSQL y conéctelo nuevamente e intente eliminar / soltar. Esto me ayudó.
fuente
En PG admin puede desconectar su servidor (clic derecho en el servidor) y todas las sesiones se desconectarán al reiniciar
fuente
Para mí funcionó lo siguiente:
Estoy usando:
gitlab_edition: "gitlab-ce"
gitlab_version: '12 .4.0-ce.0.el7 '
fuente
Primero, encuentre Postgres que puerto está ejecutando
ps -ef | grep postgres
devolverá el número de puerto
matar -9
port_number
Por fin vuelve a empezar Postgres
fuente