我正在尝试删除MySQL数据库中过期的条目。在创建或更新时,一个名为lastBeat的字段会被更新为CURRENT_TIME,然后我使用以下查询来检查/删除超过20秒的行:
我还尝试过使用CURRENT_TIME代替NOW()。
有两个主要的循环:
1. 每秒更新rmachines中的一行。 2. 执行删除查询。
如果2被快速执行,当时间滚动到下一分钟时(即59-60秒),它会删除该行,就好像它已经过期了(即使它肯定没有!),否则它会正常运行。
如果2每秒执行一次,这不太明显,“虚假过期”很少发生,但我每秒运行5次以暴露这个“问题”。
我找到了一个解决方案,在相同的场景下进行了测试,似乎可以正常工作: MySQL数据库中删除三个月前的行的作业 但是,有人能告诉我为什么我的方法不起作用吗?
DELETE * FROM `rmachines` WHERE
`lastBeat` < (NOW() - 20);
我还尝试过使用CURRENT_TIME代替NOW()。
有两个主要的循环:
1. 每秒更新rmachines中的一行。 2. 执行删除查询。
如果2被快速执行,当时间滚动到下一分钟时(即59-60秒),它会删除该行,就好像它已经过期了(即使它肯定没有!),否则它会正常运行。
如果2每秒执行一次,这不太明显,“虚假过期”很少发生,但我每秒运行5次以暴露这个“问题”。
我找到了一个解决方案,在相同的场景下进行了测试,似乎可以正常工作: MySQL数据库中删除三个月前的行的作业 但是,有人能告诉我为什么我的方法不起作用吗?