Mi proceso actual para depurar procedimientos almacenados es muy simple. Creo una tabla llamada "depuración" donde inserto valores variables del procedimiento almacenado mientras se ejecuta. Esto me permite ver el valor de cualquier variable en un punto dado del script, pero ¿hay una mejor manera de depurar los procedimientos almacenados de MySQL?
mysql
database
debugging
stored-procedures
Casa Cory
fuente
fuente
Respuestas:
Hago algo muy parecido a ti.
Por lo general, incluiré un parámetro DEBUG que por defecto es falso y puedo establecerlo en verdadero en tiempo de ejecución. Luego, envuelva las declaraciones de depuración en un bloque "DEPURAR"
También utilizo una tabla de registro con muchos de mis trabajos para poder revisar los procesos y el tiempo. Mi código de depuración también se muestra allí. Incluyo el nombre del parámetro de llamada, una breve descripción, los recuentos de filas afectados (si corresponde), un campo de comentarios y una marca de tiempo.
Las buenas herramientas de depuración son una de las fallas tristes de todas las plataformas SQL.
fuente
Se
debug_msg
puede llamar al siguiente procedimiento para simplemente enviar un mensaje de depuración a la consola:Luego ejecute la prueba así:
Resultará en la siguiente salida:
fuente
INSERT INTO my_log_table (message) VALUES (msg)
recuperar y recuperar todos los mensajes de depuración una vez que finalizan las llamadas a funciones (es decir, está de vuelta en el procedimiento)Sí, hay herramientas especializadas para este tipo de cosas: MySQL Debugger .
fuente
Cómo depurar un procedimiento almacenado de MySQL.
Pobre depurador del hombre:
Cree una tabla llamada logtable con dos columnas,
id INT
ylog VARCHAR(255)
.Haga que la columna de identificación aumente automáticamente.
Use este procedimiento:
Coloque este código en cualquier lugar donde desee registrar un mensaje en la tabla.
Es un pequeño registrador rápido y sucio para descubrir lo que está sucediendo.
fuente
Existen herramientas GUI para depurar procedimientos / funciones almacenados y scripts en MySQL. Una herramienta decente que dbForge Studio para MySQL tiene una gran funcionalidad y estabilidad.
fuente
El depurador para mysql fue bueno pero no es gratis. Esto es lo que uso ahora:
Uso en procedimiento almacenado:
uso del procedimiento almacenado:
fuente
Aquí se presenta otra forma
http://gilfster.blogspot.co.at/2006/03/debugging-stored-procedures-in-mysql.html
con procedimientos personalizados de depuración mySql y tablas de registro.
También puede simplemente colocar una selección simple en su código y ver si se ejecuta.
Tengo esta idea de
http://forums.mysql.com/read.php?99,78155,78225#msg-78225
También alguien creó una plantilla para procedimientos de depuración personalizados en GitHub.
Mira aquí
http://www.bluegecko.net/mysql/debugging-stored-procedures/ https://github.com/CaptTofu/Stored-procedure-debugging-routines
Fue mencionado aquí
¿Cómo detectar alguna excepción en los desencadenantes y los procedimientos de almacenamiento para mysql?
fuente
Simplemente coloco sentencias select en áreas clave del procedimiento almacenado para verificar el estado actual de los conjuntos de datos y luego comentarlos (- seleccionar ...) o eliminarlos antes de la producción.
fuente
Llego tarde a la fiesta, pero traje más cerveza:
http://ocelot.ca/blog/blog/2015/03/02/the-ocelotgui-debugger/ y https://github.com/ocelot-inc/ocelotgui
Lo intenté, y parece bastante estable, admitiendo puntos de interrupción e inspección variable.
No es una suite completa (solo 4,1 Mb), ¡pero me ayudó mucho!
Cómo funciona: se integra con su cliente mysql (estoy usando Ubuntu 14.04), y después de ejecutar:
Instala una nueva base de datos en su servidor, que controla el proceso de depuración. Entonces:
le dará la oportunidad de recorrer paso a paso su código y, al "actualizar" sus variables, podrá ver mejor lo que sucede dentro de su código.
Consejo importante: durante la depuración, quizás cambie (vuelva a crear el procedimiento). Después de una recreación, ejecute: $ exit y $ setup antes de un nuevo $ debug
Esta es una alternativa a los métodos de "inserción" y "registro". Su código permanece libre de instrucciones adicionales de "depuración".
Captura de pantalla:
fuente
MySQL Connector / Net 6.6 tiene una función para depurar procedimientos y funciones almacenados
fuente
MySql Connector / NET también incluye un depurador de procedimientos almacenados integrado en Visual Studio a partir de la versión 6.6. Puede obtener el instalador y la fuente aquí: http://dev.mysql.com/downloads/connector/net/
Alguna documentación / capturas de pantalla: https://dev.mysql.com/doc/visual-studio/en/visual-studio-debugger.html
Puede seguir los anuncios aquí: http://forums.mysql.com/read.php?38,561817,561817#msg-561817
ACTUALIZACIÓN: MySql for Visual Studio se dividió desde Connector / NET en un producto separado, puede elegirlo (incluido el depurador) desde aquí https://dev.mysql.com/downloads/windows/visualstudio/1.2.html (todavía libre y de código abierto).
DESCARGO DE RESPONSABILIDAD: Fui el desarrollador que creó el motor de depuración de procedimientos almacenados para MySQL para el producto Visual Studio.
fuente
El primer depurador estable para MySQL está en dbForge Studio para MySQL
fuente
Había usado dos herramientas diferentes para depurar procedimientos y funciones:
fuente
La variable definida por el usuario MySQL (compartida en la sesión) podría usarse como salida de registro:
dará salida:
fuente
Sapo mysql. Hay una versión gratuita http://www.quest.com/toad-for-mysql/
fuente
Respuesta correspondiente a esto por @Brad Parks No estoy seguro acerca de la versión de MySQL, pero la mía era 5.6, por lo tanto, un poco de ajuste funciona:
Creé una función
debug_msg
que es función (no procedimiento) y devuelve texto (sin límite de caracteres) y luego llamo a la función como SELECTdebug_msg
(params) ASmy_res_set
, código de la siguiente manera:fuente