在 mysql 中的某个时间间隔后执行删除特定记录
Perform delete a perticular records after some interval of time in mysql
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 table 中删除记录,其中 lname 是 'Test'
进入 my.ini 文件并添加这一行,很可能就是这个问题。
event_scheduler = on
重启mysql.Apparently你甚至可以set it on the fly
我猜你不需要每分钟都有一个事件。只需定义一个视图来过滤掉您不想要的记录:
create view v_lead_master as
select lm.*
from lead_master lm
where lm.lname not like '%Test%';
然后每天在一个缓慢的时间段安排一个工作或事件来删除你想要的行。您的应用程序应该使用视图。您的测试应使用基数 table.
我终于用 cron 作业做到了。
我创建了一个调用模型函数的控制器,其中包含删除记录的查询。
并设置在特定时间间隔后调用控制器的 cron 作业。
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 table 中删除记录,其中 lname 是 'Test'
进入 my.ini 文件并添加这一行,很可能就是这个问题。
event_scheduler = on
重启mysql.Apparently你甚至可以set it on the fly
我猜你不需要每分钟都有一个事件。只需定义一个视图来过滤掉您不想要的记录:
create view v_lead_master as
select lm.*
from lead_master lm
where lm.lname not like '%Test%';
然后每天在一个缓慢的时间段安排一个工作或事件来删除你想要的行。您的应用程序应该使用视图。您的测试应使用基数 table.
我终于用 cron 作业做到了。 我创建了一个调用模型函数的控制器,其中包含删除记录的查询。 并设置在特定时间间隔后调用控制器的 cron 作业。