Mostrando entradas con la etiqueta posgresql. Mostrar todas las entradas
Mostrando entradas con la etiqueta posgresql. Mostrar todas las entradas

2012/04/09

Resetear sesiones de usuarios conectados a Postgresql

Muchas veces hay usuarios que han dejado su conexión abierta y están bloqueando la base de datos impidiendo hacer algunas tareas de administración, vacuums, renames, etc.

Para localizarlos se puede usar:

select datname, usename, procpid from pg_stat_activity;

Luego simplemente para eliminar todos:

select pg_terminate_backend(procpid) from pg_stat_activity where datname='whatever';

UPDATE: Algunos datos temporales interesantes sobre las conexiones:

select datname, usename, procpid, xact_start, backend_start, query_start from pg_stat_activity;
http://www.postgresonline.com/journal/archives/134-Terminating-Annoying-Back-Ends.html
       
   

2010/07/29

Usar editor externo en postgresql

Aunque pgAdmin es un programa bastante cómodo e intuitivo para administrar bases de datos postgres, el cliente en línea de comandos es realmente potente y ágil.

En algunas ocasiones es verdad que para programar sobre la base de datos, hacer consultas muy complejas o realizar otras operaciones trabajar en el terminal es algo engorroso. En el terminal no es tan sencillo editar y no tienen tantas ayudas como en un programa de edición de textos o un IDE.

Existe la posibilidad de usar un editor externo para editar una consulta concreta.

El comando
 \e 

permite abrir un editor con el "Query Buffer" actual. La primera vez que se ejecuta este comando '\e' te pregunta qué programa externo usar; emacs con su sql-mode puede que sea el mejor ;). Admite como parámetro un fichero también.
 \e [FILE]


Si quieres editar una función concreta, puedes utilizar:
 \ef [FUNCTION_NAME] 

que si ejecutas sin parámetros te genera una plantilla básica para empezar a programar.

En ocasiones puede pasar lo siguiente si queremos editar/ver una función:


#\ef dropgeometrycolumn
ERROR: more than one function named "dropgeometrycolumn"


Esta función es de PostGIS y existe un conflicto de nombres debido a que es posible aplicar "polimorfismo". Si miramos la firma de las funciones:


# \df dropgeometrycolumn

Schema | Name | Result data type | Argument data types | Type
--------+--------------------+------------------+---------------------+--------------
public | dropgeometrycolumn | text | character varying, character varying | normal
public | dropgeometrycolumn | text | character varying, character varying, character varying| normal
public | dropgeometrycolumn | text | character varying, character varying, character varying, character varying | normal
(3 rows)


Para poder editar una de esas funciones concretas habría que espedificar los argumentos:


# \ef addgeometrycolumn(character varying, character varying, integer, character varying, integer)