【问题标题】:Perform delete a perticular records after some interval of time in mysql在mysql中的一段时间后执行删除特定记录
【发布时间】:2018-05-25 12:59:43
【问题描述】:
DROP EVENT `deleteTestEntries`;
CREATE DEFINER=`root`@`localhost` EVENT `deleteTestEntries`
    ON SCHEDULE EVERY 1 MINUTE
    STARTS '2018-05-25 18:17:01'
    ON COMPLETION NOT PRESERVE ENABLE DO
    DELETE FROM lead_master WHERE lead_master.lname LIKE '%Test%'

上述事件有什么问题。 它的创建没有错误,但没有执行任何操作。 我只是想从我的lead_master表中删除lname为'Test'的记录

【问题讨论】:

  • 这可能是解决您问题的错误方法。我建议您再问一个问题,详细了解您的桌子以及您想要完成的任务。

标签: mysql sql mariadb mysql-event


【解决方案1】:

进入 my.ini 文件并添加这一行,很可能就是这个问题。

event_scheduler = on

重启mysql。显然你甚至可以set it on the fly

【讨论】:

    【解决方案2】:

    我终于用 cron 作业做到了。 我创建了一个控制器,它调用模型函数包含删除记录的查询。 并设置在特定时间间隔后调用控制器的 cron 作业。

    【讨论】:

      【解决方案3】:

      我猜你不需要每分钟都有一个事件。只需定义一个视图来过滤掉您不想要的记录:

      create view v_lead_master as
          select lm.*
          from lead_master lm
          where lm.lname not like '%Test%';
      

      然后每天缓慢地安排一个工作或活动,以删除您想要的行。您的应用程序应该使用该视图。您的测试应使用基表。

      【讨论】:

      • 这种方法将继续在数据库中存储无用的数据。这将增加 db 的大小...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多