viernes, 20 de noviembre de 2015

Eliminar una base de datos PostgreSQL de manera Forzada


En esta ocasión me tocó resolver algo sencillo pero un poco difícil de notar.

El percance fué que creé una base de datos en postgres "mi_base", la cual pesaba unos 3.4 gigas, cuando se terminó de usar me disponía a eliminarla y ¡Oh sorpresa!, no permitía eliminar, ya que habían "conexiones activas", cosa que no era cierto, ya que el único usuario se había desconectado hacía unos minutos.

Para no dar mas vueltas, la solución está en revisar las conexiones existentes a esa base de datos y matarlas (¡qué sádico!, ¿No?).

Lo primero es loguearse como super usuario en postgres, psql -Upostgres. Posteriormente, hay que consultar la tabla pg_stat_activity se la manera siguiente

SELECT procpid, current_query FROM pg_stat_activity where datname = 'mi_base';

De donde "mi_base" es la base de datos que no se puede eliminar, y revisamos el campo "procpid", ese es el id del proceso que está causando problemas.

Teniendo ese PID identificado, nos disponemos a matarlo (¡qué sádico!, ¿No?).

kill -TERM procpid

De donde procpid es el número entero del proceso a terminar. Hecho esto, lo siguiente ya es normal: ejecutar el drop database.

drop database mi_base;

Con esto ya debería ser posible eliminar la base de datos sin problema. Debo mencionar que la versión del servidor que estoy trabajando es postgres 8.2.



Espero te sea de utilidad :)