Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Drucken Sie Debugging-Informationen aus einer gespeicherten Prozedur in MySQL

Option 1:Fügen Sie dies in Ihre Prozedur ein, um 'comment' in stdout auszugeben, wenn es ausgeführt wird.

SELECT 'Comment';

Option 2:Fügen Sie dies in Ihre Prozedur ein, um eine Variable damit auf stdout auszugeben:

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

Dies gibt myvar is 5 aus zu stdout, wenn die Prozedur ausgeführt wird.

Option 3, Erstellen Sie eine Tabelle mit einer Textspalte namens tmptable , und senden Sie Nachrichten an sie:

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

Sie könnten das Obige in eine gespeicherte Prozedur einfügen, also müssten Sie nur Folgendes schreiben:

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

Das spart ein paar Tastenanschläge.

Option 4, Nachrichten in Datei protokollieren

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

Dieser Befehl unterliegt sehr strengen Einschränkungen. Sie können die Ausgabedatei nur in Bereiche auf der Festplatte schreiben, die der Gruppe „Andere“ Erstellungs- und Schreibberechtigungen erteilen. Es sollte funktionieren, es im /tmp-Verzeichnis zu speichern.

Auch wenn Sie die Ausgangsdatei geschrieben haben, können Sie sie nicht überschreiben. Dies soll verhindern, dass Cracker Ihre Box rooten, nur weil sie SQL in Ihre Website eingeschleust haben und beliebige Befehle in MySQL ausführen können.