tucaz Asked: 2013-10-15 17:52:59 +0800 CST2013-10-15 17:52:59 +0800 CST 2013-10-15 17:52:59 +0800 CST 在 MySql 中记录/记录的事件历史记录在哪里? 772 我只是设置了一些存储过程以使用 CREATE EVENT 在事件调度程序中运行。 我试图找到它运行历史的存储位置(如果在某个地方)。我查看了文档,但找不到任何东西。 是否有一些表格或日志可以让我看到我的预定事件成功运行? mysql jobs 1 个回答 Voted Best Answer Michael - sqlbot 2013-10-15T19:51:40+08:002013-10-15T19:51:40+08:00 没有预定事件的日志,除非它们抛出异常......在这种情况下,您会发现一个写入标准 MySQL“hostname.err”错误日志的错误。如果没有错误,并且它们仍未运行,则它们已处理。每个事件每次触发时都会在进程列表中获得一个新的线程 ID,并且当事件完成时线程被销毁。 您可以使用的一个选项是为此目的创建一个表,并将日志条目从事件主体或事件调用的过程中插入到该表中。 在正在运行的事件中,CONNECTION_ID() 函数返回事件正在运行的线程的 id,如果有用的话,您可以在执行日志记录的查询中使用此函数,例如插入包含该值的日志条目时事件开始,并在事件几乎完成时更新该日志条目。 另一个选项有点像 hack(有人会说),但它也有效——您可以在事件触发的事件或过程中在 MySQL 错误日志中生成“警告”,方法是在最后引发 SQL 警告的事件。请注意,这只会从事件中写入错误日志,这是因为没有连接客户端。 SIGNAL SQLSTATE '01000' SET MESSAGE_TEXT = 'hey, this job ran'; 在我的一些系统上,MySQL 错误日志由外部进程“跟踪”错误日志文件来监控,我安排了事件,其唯一目的是定期将这样的警告写入错误文件,以便外部进程永远不会在经常安静的错误日志中没有看到“某些东西”的时间超过了这么多分钟,以保持它正确地看到正确的日志文件增长感到高兴。
没有预定事件的日志,除非它们抛出异常......在这种情况下,您会发现一个写入标准 MySQL“hostname.err”错误日志的错误。如果没有错误,并且它们仍未运行,则它们已处理。每个事件每次触发时都会在进程列表中获得一个新的线程 ID,并且当事件完成时线程被销毁。
您可以使用的一个选项是为此目的创建一个表,并将日志条目从事件主体或事件调用的过程中插入到该表中。
在正在运行的事件中,CONNECTION_ID() 函数返回事件正在运行的线程的 id,如果有用的话,您可以在执行日志记录的查询中使用此函数,例如插入包含该值的日志条目时事件开始,并在事件几乎完成时更新该日志条目。
另一个选项有点像 hack(有人会说),但它也有效——您可以在事件触发的事件或过程中在 MySQL 错误日志中生成“警告”,方法是在最后引发 SQL 警告的事件。请注意,这只会从事件中写入错误日志,这是因为没有连接客户端。
在我的一些系统上,MySQL 错误日志由外部进程“跟踪”错误日志文件来监控,我安排了事件,其唯一目的是定期将这样的警告写入错误文件,以便外部进程永远不会在经常安静的错误日志中没有看到“某些东西”的时间超过了这么多分钟,以保持它正确地看到正确的日志文件增长感到高兴。