【问题标题】:Autorunning Query in mysql在mysql中自动运行查询
【发布时间】:2012-12-02 02:17:38
【问题描述】:

是否可以创建一个每晚 11 点运行的存储过程,如果最近六个月修改了任何记录,请检查表,如果最近六个月修改了某些记录,我必须从表中删除它。这必须在不使用任何外部语言的情况下自动运行。

【问题讨论】:

    标签: mysql automation mysql-event


    【解决方案1】:

    你可以用mysql事件调度器来实现--

    http://dev.mysql.com/doc/refman/5.1/en/events.html

    详博:http://goo.gl/6Hzjvg

    【讨论】:

      【解决方案2】:
      CREATE EVENT IF NOT EXISTS `my_old_data_cleaner_event`
      ON SCHEDULE EVERY 23 DAY_HOUR
      COMMENT 'Clean up Service Start at 11:00PM daily!'
      DO DELETE FROM my_table WHERE created_date < (NOW() - INTERVAL 1 MONTH);
      

      OR 存储过程。

      CREATE EVENT IF NOT EXISTS `my_old_data_cleaner_event`
      ON SCHEDULE EVERY 23 DAY_HOUR
      DO CALL my_sp_cleanup_old_data();
      

      【讨论】:

      • 非常感谢....你能说一下我们如何在不使用任何外部语言调用的情况下运行此查询。
      • 这是我的错误,如果我们在 MySQL 中创建一个事件,它将自动运行。谢谢
      【解决方案3】:

      创建一个如下所示的事件

      CREATE EVENT e_daily
        ON SCHEDULE
          EVERY 1 DAY
       DO
         BEGIN
           DELETE FROM tableA WHERE DATE(`yourtimestamp`) <(CURDATE() - INTERVAL 6 MONTHS);
        END 
      

      【讨论】:

        【解决方案4】:

        您还可以编写一个脚本来处理您在 Python、Perl、PHP 等中的数据。

        之后,只需使用crontab -e 设置 cron 条目并添加以下行:

        0 23 * * * /path/to/my/script.pl 2>&1 >/dev/null
        

        如果您不指定2&gt;&amp;1 &gt;/dev/null,您将收到包含执行结果的电子邮件。

        【讨论】:

          猜你喜欢
          • 2014-10-03
          • 2019-08-22
          • 1970-01-01
          • 1970-01-01
          • 2018-01-26
          • 2015-10-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多