viernes, 4 de marzo de 2016

Depurar procedimientos almacenados en base de datos MYSQL


Luego de un buen tiempo fuera del blog por asuntos de tiempo, mucho trabajo. Acá estamos de nuevo.

En esta ocasión quiero hablar de la depuración (debugging) de procedimientos almacenados y funciones en MySQL.

Hace unos cuantos años atrás estaba trabajando en un proyecto cuya base de datos estaba en MySQL, por supuesto que habían procedimientos almacenados y funciones. En determinado momento que necesitaba correrlos en modo depuración y paso a paso, me encontré en una situación apremiante porque de hacer la depuración "a mano", tomaría mucho tiempo. Es entonces se hizo necesario alguna herramienta que permita realizar esta tarea de una manera más automatizada, rápida y sencilla. Cabe destacar que para otros motores de bases de datos (como Oracle) no es difícil contar con un depurador.

Estuve investigando en internet y no encontré mucho entonces, pero di con una herramienta llamada Debugger for MySQL. La descargué, instalé y me puse a depurar mis procedimientos almacenados, paso a paso. Me salvó la vida, me ahorró varias horas de depuración "a pie".

Luego de terminar ese proyecto con MySQL, pasé a trabajar con otros motores de bases de datos y dejé de usar dicha herramienta.

Pero justamente ahora estoy de nuevo trabajando en un proyecto con base de datos MySQL, y me he visto de nuevo en la necesidad de hacer depuración de procedimientos almacenados paso a paso.

Nuevamente buscando en internet no encuentro mucho, los más populares clientes de base de datos no tienen depurador para MySQL. Nuevamente vuelvo a instalar Debugger for MySQL, y nuevamente me ha salvado la vida. Repito: uso fácil, rápido, buena interfaz y te permite visualizar cómo van cambiando las variables en cada sentencia, se puede poner puntos de interrupción, ir paso a paso, y saltar hacia el llamado de otro procedimiento almacenado que se llame dentro del principal que estamos depurando.

Cuenta con las características siguientes:
  • Breakpoints
  • Watches
  • Expression Evaluator
  • SQL Window
  • Output
  • Call Stack
  • Autocomplete
  • Code parameters
  • MySQL Reference Manual
  • Introduce CURSOR Iteration command

Dejo algunas capturas de pantalla para ilustrar un poco: 

Acá la pantalla inicial donde se definen los parámetros y el llamado del procedimiento:



Esta es la pestaña donde está el procedimiento siendo depurado, pueden ver un breakpoint sombreado en color naranja.
 

Incusive podemos ejecutar consultas SQL sobre alguna tabla temporal, etc. en caso de que nos interese ver si se insertó, modificó algún registro en algún punto de nuestro procedimiento almacenado.


Como he mencionado antes, es realmente sencillo el uso de esta herramienta, a mí me bastó con leer la sección "Quick start" para empezar a utilizarlo.

NOTA: Algo que me parece importante es que he usado esta herramienta en ambiente windows y linux, porque trabaja bien con wine.

Les recomiendo visitar el website para que obtengan mayor información: