2011-04-21 36 views
2


我已经在mysql中创建了事件来修复,优化和删除每月基础上某些表的旧数据。如何将非select mysql语句的结果导入OUTFILE?

 
delimiter $$ 
Create event CheckMyDB 
On SCHEDULE AT current_timestamp + INTERVAL 1 MONTH 
DO 
DELETE FROM SESSIONS where MYCONDITION; 
REPAIR TABLE DATANODES; 
OPTIMIZE TABLE DATANODES; 
$$ 

现在我怎么知道什么是我的事件的输出?换句话说,我可以保存表中的删除,修复和otimize的输出(类似INTO OUTFILE)或将其插入到自定义表中或通过电子邮件发送(我不认为从mysql发送电子邮件是可能的!)

感谢您的帮助

回答

2

如果没有查看日志,您无法获得输出,如果它作为事件运行(据我所知)。但是,如果您将其作为脚本运行,请使用如下命令:

# mysql -u <user> -p<password> -vvv database <script.sql> script.log 2>&1 

您可以将所有输出捕获到文本文件中。该-vvv提高了输出的详细程度,让你得到x rows affected

运行此脚本作为cron作业将允许您设置相同的调度您的事件,也使电子邮件发出您的结果文件更加容易。

为了安全起见,可以考虑在my.cnf文件中存储你的密码将要运行脚本的用户:

[client] 
user=<user> 
password=<password> 

记住chmod此文件,以便只有所有者可以读取它。

+2

同意100%解答。从MySQL调度程序中获取输出是不可能的,所以这是最合理的方法。 – 2011-04-21 12:23:08

+0

@Simon:在相关说明中,是否有任何方法可以获取MySQL事件的执行结果历史记录? 'SHOW EVENTS;'只显示最少的信息,甚至不是下一次计划的运行时间。 – Gruber 2013-02-18 14:55:44