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

Udskriv fejlfindingsoplysninger fra gemt procedure i MySQL

Mulighed 1:Indsæt dette i din procedure for at udskrive "kommentar" til stdout, når det kører.

SELECT 'Comment';

Mulighed 2:Indsæt dette i din procedure for at udskrive en variabel med den til stdout:

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

Dette udskriver myvar is 5 til stdout, når proceduren kører.

Mulighed 3, Opret en tabel med én tekstkolonne kaldet tmptable , og push beskeder til den:

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

Du kan lægge ovenstående i en lagret procedure, så alt du behøver at skrive er dette:

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

Hvilket sparer et par tastetryk.

Mulighed 4, Log beskeder til fil

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

Der er meget tunge restriktioner på denne kommando. Du kan kun skrive outfilen til områder på disken, der giver 'andre'-gruppen oprettelse og skrivetilladelse. Det burde virke at gemme det i /tmp-mappen.

Når du først har skrevet outfilen, kan du heller ikke overskrive den. Dette er for at forhindre crackere i at roote din boks, bare fordi de har SQL injiceret dit websted og kan køre vilkårlige kommandoer i MySQL.



  1. Sådan installeres MySQL 8 på Ubuntu

  2. Er PostgreSQL-funktioner transaktionelle?

  3. Zend_Db:Hvordan opretter man forbindelse til en MySQL-database over SSH-tunnel?

  4. MySQL:Hvordan finder jeg ud af, hvilke tabeller der refererer til en bestemt tabel?