我想在不停止或启动服务的情况下随意写入 MySQL 5.5 错误日志。请注意,我不关心什么被写入错误日志,只要东西被写入。
我尝试运行错误查询并设置不存在的系统变量,但这些操作似乎没有在错误日志中生成条目。
我怎样才能做到这一点?
错误查询和其他无效操作通常仅在没有客户端连接将错误写入到错误日志时才写入错误日志……例如,当不是客户端线程的线程遇到错误时……或来自事件调度程序.
从计划事件中,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
Run Code Online (Sandbox Code Playgroud)
或者,有一个 3rd 方用户定义函数 log_error()
可以写入错误日志:https : //github.com/mysqludf/lib_mysqludf_log
那是假设你不是“真的”想要触发 MySQL 礼貌地关闭并重新打开日志文件......这是用FLUSH ERROR LOGS;
.