sql >> Databáze >  >> RDS >> Mysql

Tisk informací o ladění z uložené procedury v MySQL

Možnost 1:Vložte toto do svého postupu, chcete-li vytisknout „komentář“ na stdout, když se spustí.

SELECT 'Comment';

Možnost 2:Vložte toto do svého postupu pro tisk proměnné s ní do stdout:

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

Toto vytiskne myvar is 5 na stdout při spuštění procedury.

Možnost 3:Vytvořte tabulku s jedním textovým sloupcem s názvem tmptable a odeslat do něj zprávy:

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

Výše uvedené byste mohli vložit do uložené procedury, takže vše, co byste museli napsat, je toto:

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

Což ušetří pár úhozů.

Možnost 4, Protokolovat zprávy do souboru

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

Tento příkaz má velmi přísná omezení. Výstupní soubor můžete zapsat pouze do oblastí na disku, které dávají skupině „ostatní“ oprávnění k vytváření a zápisu. Mělo by fungovat uložení do adresáře /tmp.

Také jakmile zapíšete výstupní soubor, nemůžete jej přepsat. To má zabránit crackerům v rootnutí vašeho boxu jen proto, že do vašeho webu vložili SQL a mohou spouštět libovolné příkazy v MySQL.



  1. PostgreSQL JOIN s typem pole s pořadím prvků pole, jak implementovat?

  2. Proč některá připojení mysql vybírají stará data z databáze mysql po odstranění a vložení?

  3. Instalace PostgreSQL na Docker

  4. Intel SSD, nyní mimo seznam hanebných