sql >> Database >  >> RDS >> Mysql

Foutopsporingsinformatie afdrukken vanuit de opgeslagen procedure in MySQL

Optie 1:Zet dit in uw procedure om 'commentaar' naar stdout af te drukken wanneer het wordt uitgevoerd.

SELECT 'Comment';

Optie 2:Zet dit in je procedure om er een variabele mee af te drukken naar stdout:

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

Dit drukt myvar is 5 . af naar stdout wanneer de procedure wordt uitgevoerd.

Optie 3, maak een tabel met één tekstkolom genaamd tmptable , en push er berichten naar toe:

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

Je zou het bovenstaande in een opgeslagen procedure kunnen zetten, dus alles wat je hoeft te schrijven is dit:

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

Dat scheelt een paar toetsaanslagen.

Optie 4, berichten naar bestand loggen

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

Er zijn zeer zware beperkingen op dit commando. U kunt het outfile alleen naar gebieden op de schijf schrijven die de groep 'anderen' aanmaak- en schrijfrechten geven. Het zou moeten werken door het op te slaan in de map /tmp.

Ook als je het outfile eenmaal hebt geschreven, kun je het niet meer overschrijven. Dit is om te voorkomen dat crackers je box rooten omdat ze SQL in je website hebben geïnjecteerd en willekeurige commando's in MySQL kunnen uitvoeren.



  1. Automatisch verhogen in orakel naar reeds gemaakte tabel

  2. Bekijk de taakgeschiedenis van SQL Server Agent met SSMS

  3. twee geselecteerde uitspraken samenvoegen

  4. Een logbestand toevoegen aan een SQL Server-database (T-SQL)