Mysql
 sql >> Database >  >> RDS >> Mysql

Stampa le informazioni di debug dalla procedura memorizzata in MySQL

Opzione 1:inserisci questo nella tua procedura per stampare 'commento' su stdout quando viene eseguito.

SELECT 'Comment';

Opzione 2:inserisci questo nella tua procedura per stampare una variabile con esso su stdout:

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

Questo stampa myvar is 5 allo stdout quando viene eseguita la procedura.

Opzione 3, crea una tabella con una colonna di testo denominata tmptable e inviaci i messaggi:

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

Potresti inserire quanto sopra in una stored procedure, quindi tutto ciò che dovresti scrivere è questo:

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

Ciò consente di risparmiare alcune sequenze di tasti.

Opzione 4, Registra messaggi su file

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

Ci sono restrizioni molto pesanti su questo comando. Puoi scrivere il file di uscita solo nelle aree del disco che danno al gruppo "altri" autorizzazioni di creazione e scrittura. Dovrebbe funzionare salvandolo nella directory /tmp.

Inoltre, una volta scritto il file di uscita, non è possibile sovrascriverlo. Questo per impedire ai cracker di eseguire il rooting della tua casella solo perché hanno iniettato SQL nel tuo sito Web e possono eseguire comandi arbitrari in MySQL.