在MySQL中打印来自存储过程的debugging信息
有没有在MySQL的方式打印debugging消息到标准输出,可温度或日志文件? 就像是:
- 在SQLServer中
print
- Oracle中的
DBMS_OUTPUT.PUT_LINE
选项1:把它放在你的程序中,当它运行的时候打印“注释”到标准输出。
SELECT 'Comment';
选项2:把它放在你的程序中用它打印一个variables到stdout:
declare myvar INT default 0; SET myvar = 5; SELECT concat('myvar is ', myvar);
这个过程运行时打印myvar is 5
到stdout。
选项3,创build一个名为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,将消息logging到文件
select "penguin" as log into outfile '/tmp/result.txt';
这个命令有非常严格的限制。 您只能将outfile写入磁盘上赋予“其他”组创build和写入权限的区域。 它应该保存到/ tmp目录。
同样,一旦你写出outfile,你不能覆盖它。 这是为了防止破解者根植你的盒子,因为他们有SQL注入你的网站,并可以在MySQL中运行任意命令。
我通常使用存储过程创build日志表以logging到日志表。 从正在开发的程序中调用所需的日志程序。
看看这个问题上的其他post ,这似乎是一个普遍的做法,虽然有一些替代品。
一个解决方法是只使用select而没有任何其他子句。