Mysql
 sql >> Base de données >  >> RDS >> Mysql

Imprimer les informations de débogage à partir de la procédure stockée dans MySQL

Option 1 :mettez ceci dans votre procédure pour imprimer un "commentaire" sur stdout lors de son exécution.

SELECT 'Comment';

Option 2 :mettez ceci dans votre procédure pour imprimer une variable avec celle-ci sur la sortie standard :

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

Ceci imprime myvar is 5 vers stdout lorsque la procédure s'exécute.

Option 3 :Créer un tableau avec une colonne de texte appelée tmptable , et envoyez-lui des messages :

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

Vous pourriez mettre ce qui précède dans une procédure stockée, donc tout ce que vous auriez à écrire est ceci :

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

Ce qui économise quelques frappes.

Option 4, consigner les messages dans un fichier

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

Il y a de très lourdes restrictions sur cette commande. Vous ne pouvez écrire le fichier de sortie que dans des zones du disque qui accordent au groupe "autres" des autorisations de création et d'écriture. Cela devrait fonctionner en l'enregistrant dans le répertoire /tmp.

De plus, une fois que vous avez écrit le fichier de sortie, vous ne pouvez pas l'écraser. Ceci afin d'empêcher les crackers de rooter votre box simplement parce qu'ils ont injecté SQL sur votre site Web et peuvent exécuter des commandes arbitraires dans MySQL.