MySQL 事件应在每月第一天 00:00:00(午夜)运行一次

发布于 2024-11-02 08:15:23 字数 204 浏览 2 评论 0原文

我的机器上安装了 Win XP 操作系统和 XAMPP。

我需要在每月第一天的 00:00:00(午夜)运行我的活动。 指的是每个月的1号。 (例如 1 月 1 日、2 月 1 日、3 月 1 日……)。

而且,我还需要在同一事件中调用存储过程。 我想仅使用事件/作业来实现这一切,而不是从前端。

请花几分钟时间回答我的问题。

I have Win XP os and XAMPP installed in my machine.

I need to run my event at 00:00:00(Midnight) of the 1st day of every month.
Means 1st of every month. (e.g. jan 1st, Feb1 1st, March 1st, ... ).

And, I also need to call the stored procedure in the same event.
And I want achieve all this using Event/Job only not from front end.

Please spend few minutes for my query.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

南城旧梦 2024-11-09 08:15:23

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;

The MySQL event syntax is very simple -

DELIMITER $
CREATE EVENT event1
ON SCHEDULE EVERY '1' MONTH
STARTS '2011-05-01 00:00:00'
DO 
BEGIN
 -- your code
END$

DELIMITER ;

Event will start working on '2011-05-01' at '00:00:00' (datetime must be in a future).

More information - Using the Event Scheduler

Do not forget to enable global event scheduling thread -

SET GLOBAL event_scheduler = 1;
浅笑轻吟梦一曲 2024-11-09 08:15:23

假设您的 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);

您可能需要进行一些错误检查,并向自己发送有关成功/失败的电子邮件,或者在日志文件中留下一些消息。这样您就可以监视脚本是否完全运行和/或成功运行。

Assuming your mysql database lives on a web server, you can set up a cron job that runs at the first of every month. Your server probably provides some web interface to do this.

If you can't start the cron job from the server itself, there are free web services where you can set up cron jobs that call scripts on your server at given times.

The script called by the cron job can be a simple php script that runs the query.

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
mysql_query(' /* insert query here */ ');
mysql_close($link);

You may want to include some error checking and either send yourself an email about success / failure or leave some messages in a log file. That way you can monitor whether the script runs at all and / or successfully.

娇柔作态 2024-11-09 08:15:23

例如,您创建 test 表,如下所示:

CREATE TABLE test (
  num int
);

然后,您插入 num1 的行,如下所示:

INSERT INTO test (num) VALUES (1);

现在,您创建plus_one 事件,自 2023-11-01 00:00:00 开始每隔一个月将 1 添加到 num如下图所示。 *如果 2023-11-01 00:00:00 已经过去,plus_one 事件开始将 1 添加到 num > 自创建 plus_one 活动后 2023-12-01 00:00:00 起每隔一个月。 *我的答案文档解释 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   |
+------+

For example, you create test table as shown below:

CREATE TABLE test (
  num int
);

Then, you insert the row whose num is 1 as shown below:

INSERT INTO test (num) VALUES (1);

Now, you create plus_one event which starts adding 1 to num every one month since 2023-11-01 00:00:00 as shown below. *If 2023-11-01 00:00:00 has already passed, plus_one event starts adding 1 to num every one month since 2023-12-01 00:00:00 after you create plus_one event. *My answer and the doc explain events in 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 ;

Then, you can check plus_one event adds 1 to num every one month as shown below:

mysql> SELECT * FROM test;
+------+
| num  |
+------+
|  2   |
+------+
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文