从计划的事件中,SIGNAL可用于抛出将写入 MySQL 错误日志的错误和警告。而且,当然,您现在可以“安排”一个事件只运行一次。
mysql> USE test;
Database changed
mysql> CREATE EVENT test_error_log ON SCHEDULE AT NOW() ON COMPLETION NOT PRESERVE
DO SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'hi from the error log';
Query OK, 0 rows affected (0.01 sec)
$ sudo tail /usr/local/mysql/data/hostname.err
--8<-- snip --8<--
150121 14:25:06 [ERROR] Event Scheduler: [sqlbot@%][test.test_error_log] hi from the error log
错误查询和其他无效操作通常仅在没有客户端连接将错误写入时才写入错误日志...例如当不是客户端线程的线程遇到错误...或来自事件调度程序时.
从计划的事件中,
SIGNAL
可用于抛出将写入 MySQL 错误日志的错误和警告。而且,当然,您现在可以“安排”一个事件只运行一次。或者,有一个可以写入错误日志的第 3 方用户定义函数: https ://github.com/mysqludf/lib_mysqludf_log
log_error()
这是假设你不是“真的”想要触发 MySQL 礼貌地关闭并重新打开日志文件......这是用
FLUSH ERROR LOGS;
.当您使用 MySQL 5.6 时,将log_warnings变量设置为 2
然后只需尝试使用错误的密码连接到服务器。
从 MySQL 5.7.2 开始,不推荐使用 log_warnings 变量,应该使用log_error_verbosity 。这里的默认值为 3,因此通常您不必将其更改为具有上述记录失败访问尝试的行为。