我的机器上安装了 Win XP 操作系统和 XAMPP。
我需要在每个月第一天的
00:00:00
(午夜)运行我的活动。
指的是每个月的1号。 (例如 1 月 1 日、2 月 1 日、3 月 1 日……)。
而且,我还需要在同一事件中调用存储过程。 我想仅使用事件/作业来实现这一切,而不是从前端。
请花几分钟时间询问我的问题。
MySQL 事件语法非常简单 -
DELIMITER $$
CREATE EVENT event1
ON SCHEDULE EVERY '1' MONTH
STARTS '2011-05-01 00:00:00'
DO
BEGIN
-- your code
END$$
DELIMITER ;
活动将于“2011-05-01”的“00:00:00”开始(日期时间必须是将来的时间)。
更多信息 - 使用事件调度程序
不要忘记启用全局事件调度线程 -
SET GLOBAL event_scheduler = 1;
假设您的 mysql 数据库位于 Web 服务器上,您可以设置一个在每个月的第一天运行的 cron 作业。您的服务器可能提供一些 Web 界面来执行此操作。
如果您无法从服务器本身启动 cron 作业,可以使用免费的 Web 服务,您可以在其中设置 cron 作业,在给定时间调用服务器上的脚本。
cron 作业调用的脚本可以是运行查询的简单 php 脚本。
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
mysql_query(' /* insert query here */ ');
mysql_close($link);
您可能需要进行一些错误检查,并向自己发送有关成功/失败的电子邮件,或者在日志文件中留下一些消息。这样您就可以监控脚本是否运行和/或成功。
例如,您创建
test
表,如下所示:
CREATE TABLE test (
num int
);
然后,插入
num
为1
的行,如下所示:
INSERT INTO test (num) VALUES (1);
现在,您创建
plus_one
事件,该事件从 1
开始每隔一个月将 num
添加到 2023-11-01 00:00:00
,如下所示。 *如果2023-11-01 00:00:00
已经过去,plus_one
活动自您创建1
活动后,自num
开始,每隔一个月就会将2023-12-01 00:00:00
添加到plus_one
。 *我的回答和文档解释MySQL中的事件:
DELIMITER $$
CREATE EVENT plus_one
ON SCHEDULE EVERY 1 MONTH
STARTS '2023-11-01 00:00:00'
DO
BEGIN
UPDATE test SET num = num + 1;
END$$
DELIMITER ;
然后,您可以检查
plus_one
活动每隔一个月将1
添加到num
,如下所示:
mysql> SELECT * FROM test;
+------+
| num |
+------+
| 2 |
+------+