每 5 分钟更新一次值

Posted

技术标签:

【中文标题】每 5 分钟更新一次值【英文标题】:Update every 5 minutes a value 【发布时间】:2020-06-23 10:17:17 【问题描述】:

我正在使用 mysql 数据库,我想知道是否有任何方法可以每 x 分钟/小时/天修改列的值。

例如,我想每 5 分钟执行一次以下查询,UPDATE table SET x=0;

我可以从 phpMyAdmin 界面设置一个事件或类似的东西吗?

【问题讨论】:

是的,你可以在 MySQL 中定义一个event 你可以像 juergen 所说的那样,从你的主机或 MySQL 中设置一个 cron 任务(或 cron 作业)。 使用事件。它比 cron 工作更好。当数据库未运行时,cron 作业也每 5 分钟运行一次,然后生成错误。事件调度程序仅在数据库运行时运行 @Viorel 。 . .这是一个 X-Y 问题。我想不出任何我想这样做的合理情况。你应该问另一个问题,描述你真正想要完成的事情。 【参考方案1】:

我不知道如何使用 PHPMyAdmin 接口来创建事件,但是,这可以在“纯”SQL 中完成:

CREATE EVENT IF NOT EXISTS your_event_name
ON SCHEDULE EVERY 5 MINUTE
DO UPDATE table SET x=0;

关于ON SCHEDULE EVERY 5 MINUTE 部分,这将立即执行该事件,然后每 5 分钟执行一次,直到永远。

如果要延迟执行,可以在EVERY语句后添加STARTS

-- This will delay the first execution in 1 hour
ON SCHEDULE EVERY 5 MINUTE STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR

您可以使用 ENDS 定义 EVENT 何时停止工作:

-- This will end the event in 1 week
ON SCHEDULE EVERY 5 MINUTE ENDS CURRENT_TIMESTAMP + INTERVAL 1 WEEK

当然,STARTSENDS 也可以结合使用

-- This will end the event in 1 week
ON SCHEDULE
    EVERY 5 MINUTE -- Play every 5 minutes
    STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR -- Start in 1 hour
    ENDS CURRENT_TIMESTAMP + INTERVAL 1 WEEK -- End in 1 week

如果您有超过 1 个查询要在事件中执行,您需要将指令包装在 BEGIN / END 中:

DELIMITER $$

CREATE EVENT IF NOT EXISTS your_event_name
ON SCHEDULE EVERY 5 MINUTE
DO
    BEGIN
        UPDATE table1 SET x=0;
        UPDATE table2 SET foo='bar';
    END $$

DELIMITER ;

欲了解更多信息,请查看documentation

【讨论】:

phpMyAdmin 有一个“事件”选项卡可以帮助设置,但是由于要运行的 SQL 查询是直接输入的,所以 GUI 确实只保存了几行 SQL 来设置计划,定义器,以及其他一些零碎的东西。你的回答很全面。 谢谢,@Cid。这是工作。这就是我要找的。​​span> 【参考方案2】:

我不了解 PHPMyAdmin,但是像 Apache NiFi 这样的工具对于此类调度操作非常有用。只需使用处理器并设置调度设置。欲了解更多信息:

https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-standard-nar/1.11.3/org.apache.nifi.processors.standard.PutSQL/index.html

【讨论】:

以上是关于每 5 分钟更新一次值的主要内容,如果未能解决你的问题,请参考以下文章

GPS LAT/Long 每 5 分钟更新一次

AppWidget每分钟更新一次

Qt 每秒更新一次值

“如何修复Real Device上的'Service Destroy'

python学习记录5--------列表list

电池高效的 android 小部件,每分钟更新一次