从MySQL中的存储过程打印调试信息

有没有办法在MySQL打印调试消息到stdout,temptable或logfile?就像是:

>在SQLServer中打印
> Oracle中的DBMS_OUTPUT.PUT_LINE

选项1:将这个在你的过程中打印’stdout’运行时的注释。

SELECT 'Comment';

选项2:把这个在你的过程中打印一个变量到它的stdout:

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

这个打印myvar是5到stdout当程序运行时。

选项3,创建一个包含一个名为tmptable的文本列的表,并向其推送消息:

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

你可以把上面的一个存储过程,所以你必须写的是这样的:

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

它节省了几个键击。

选项4,将消息记录到文件

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

这个命令有很大的限制。您只能将outfile写入磁盘上给予“其他”组创建和写入权限的区域。它应该工作保存到/ tmp目录。

另外,一旦你写出outfile,你不能覆盖它。这是为了防止破解者生根你的盒子只是因为他们有SQL注入您的网站,并可以在MySQL中运行任意命令。

http://stackoverflow.com/questions/3314771/print-debugging-info-from-stored-procedure-in-mysql

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:从MySQL中的存储过程打印调试信息