sql >> Databasteknik >  >> RDS >> Mysql

Skriv ut felsökningsinformation från lagrad procedur i MySQL

Alternativ 1:Lägg in detta i din procedur för att skriva ut "kommentar" till stdout när den körs.

SELECT 'Comment';

Alternativ 2:Lägg detta i din procedur för att skriva ut en variabel med den till stdout:

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

Detta skriver ut myvar is 5 till stdout när proceduren körs.

Alternativ 3, Skapa en tabell med en textkolumn som heter tmptable och skicka meddelanden till den:

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

Du kan lägga ovanstående i en lagrad procedur, så allt du behöver skriva är detta:

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

Vilket sparar några knapptryckningar.

Alternativ 4, Logga meddelanden till fil

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

Det finns mycket tunga restriktioner för detta kommando. Du kan bara skriva utfilen till områden på disken som ger gruppen "andra" skapa- och skrivbehörigheter. Det borde fungera att spara det till /tmp-katalogen.

När du väl har skrivit utfilen kan du inte skriva över den. Detta för att förhindra att crackers rotar din box bara för att de har SQL-injicerat din webbplats och kan köra godtyckliga kommandon i MySQL.



  1. Mysql COUNT(*) på flera tabeller

  2. Hur skapar man ett "dubbelsidigt" unikt index på två fält?

  3. Använder Union All och Order By i MySQL

  4. Så här ser du den största avkastningen från din Microsoft Access-databas