¿Hay alguna forma en MySQL de imprimir mensajes de depuración en stdout, temptable o logfile? Algo como:
- imprimir en SQLServer
- DBMS_OUTPUT.PUT_LINE en Oracle
solución
Opción 1: coloque esto en su procedimiento para imprimir 'comentario' en la salida estándar cuando se ejecute.
SELECCIONE 'Comentario';
Opción 2: coloque esto en su procedimiento para imprimir una variable con ella en la salida estándar:
declare myvar INT por defecto 0; SET myvar = 5; SELECT concat ('myvar es', myvar);
Esto imprime myvar es 5 a stdout cuando se ejecuta el procedimiento.
Opción 3, cree una tabla con una columna de texto llamada tmptable y envíe mensajes a ella:
declare myvar INT por defecto 0; SET myvar = 5; insertar en tmptable select concat ('myvar es', 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 ('el valor es', myvar));
Lo que ahorra algunas pulsaciones de teclas.
Opción 4, registrar mensajes para archivar
seleccione "pingüino" como iniciar sesión en el archivo de salida '/tmp/result.txt';
Hay restricciones muy severas en este comando. Solo puede escribir el archivo de salida en áreas del disco que otorgan al grupo "otros" permisos de creación y escritura. 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 crackers arraiguen su caja solo porque han inyectado SQL en su sitio web y pueden ejecutar comandos arbitrarios en MySQL.