sql >> Base de Datos >  >> RDS >> Mysql

Imprimir información de depuración del procedimiento almacenado en MySQL

Opción 1:Incluya esto en su procedimiento para imprimir un 'comentario' en la salida estándar cuando se ejecute.

SELECT 'Comment';

Opción 2:pon esto en tu procedimiento para imprimir una variable con ella en la salida estándar:

declare myvar INT default 0;
SET myvar = 5;
SELECT concat('myvar is ', myvar);

Esto imprime myvar is 5 a stdout cuando se ejecuta el procedimiento.

Opción 3, crear una tabla con una columna de texto llamada tmptable y enviarle mensajes:

declare myvar INT default 0;
SET myvar = 5;
insert into tmptable select concat('myvar is ', myvar);

Podría poner lo anterior en un procedimiento almacenado, por lo que todo lo que tendría que escribir es esto:

CALL log(concat('the value is', myvar));

Lo que ahorra algunas pulsaciones de teclas.

Opción 4, Registrar mensajes en archivo

select "penguin" as log into outfile '/tmp/result.txt';

Hay restricciones muy fuertes en este comando. Solo puede escribir el archivo de salida en áreas del disco que otorgan permisos de creación y escritura al grupo 'otros'. Debería funcionar guardándolo en el directorio /tmp.

Además, una vez que escribe el archivo de salida, no puede sobrescribirlo. Esto es para evitar que los piratas rooteen su caja solo porque han inyectado SQL en su sitio web y pueden ejecutar comandos arbitrarios en MySQL.