0

我正在运行与 Windows 上的 xampp 捆绑在一起的 mysql 5.1.41。我为测试目的创建了一个“事件”,但问题是该事件没有运行。调度程序是 ON。我创建了一个名为 test_table 的表,它有 2 列:id(自动增量)和 test_value(时间戳,默认为空)。每当触发事件时,该列应该存储当前时间戳。所以我为此目的创建了一个活动。但问题是,它不运行。我检查了许多数据库参数并在不同的论坛上搜索了解决方案,但无济于事。

我的步骤如下:

Step 1. Test_Table 创建语句

CREATE TABLE IF NOT EXISTS `test_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
  `test_value` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

Step 2. 执行以下语句开启调度器

set global event_scheduler=on

步骤 3. 验证 Event_scheduler 状态

show processlist

调度器状态

步骤 4. 创建一个测试函数(例程)以插入当前时间

DROP FUNCTION `test_func`//
CREATE DEFINER=`pacs`@`localhost` FUNCTION `test_func`(`x` int) RETURNS int(11)
BEGIN
    #Routine body goes here...
INSERT into test_table(test_value) VALUE(CURRENT_TIMESTAMP);
    RETURN 0;
END

步骤 5. 从 sql 语句执行函数,它工作正常。

步骤 6. 创建一个测试事件,每 30 秒调用一次 Test_func

DROP EVENT `test_event`//
CREATE EVENT `test_event` ON SCHEDULE EVERY 30 SECOND 
STARTS '2018-02-24 22:50:00' ON COMPLETION PRESERVE ENABLE 
DO call test_func(1)

步骤 7. 检查 mysql schema 中的事件表,发现虽然按照 last_executed 列,它是按照 UTC 执行的,但是我的 test_table 没有得到任何数据 在此处输入图像描述

步骤 8. 寻找解决方案和帮助

问候。

4

0 回答 0