Я использую php и mysql. Вставка данных в поле даты и времени с использованием даты (Y-m-d H: i: s) в codeigniter.
CREATE EVENT AutoDeleteRows
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 30 SECOND
DO
DELETE LOW_PRIORITY FROM a_database.event_temp_users
WHERE registration_date< DATE_SUB(NOW(), INTERVAL 1 MINUTE)
Через 1 минуту я обновляю таблицу, но данные все еще там. Событие запускается каждые 30 секунд, и оно удаляет все строки, которые старше 1 минуты, не так ли?
Использование phpmyadmin и движка InnoDB.
РЕДАКТИРОВАТЬ
Даже если я сделаю
CREATE EVENT AutoDeleteRows
ON SCHEDULE EVERY 30 SECOND
DO
DELETE LOW_PRIORITY FROM a_database.event_temp_users
WHERE registration_date< DATE_SUB(NOW(), INTERVAL 1 MINUTE)
Это все еще не работает
Если ваше событие должно запускаться каждые 30 секунд, вы должны использовать:
CREATE EVENT AutoDeleteRows
ON SCHEDULE EVERY 30 SECOND
DO
DELETE LOW_PRIORITY FROM a_database.event_temp_users
WHERE registration_date< DATE_SUB(NOW(), INTERVAL 1 MINUTE)
вместо.
Чтобы повторять действия через регулярные промежутки времени, используйте КАЖДЫЙ пункт.
С AT ваше событие будет выполнено только один раз в этот определенный момент времени:
Отметка времени AT используется для одноразового события. Он указывает, что событие выполняется один раз только в дату и время, заданные меткой времени, которая должна включать в себя как дату, так и время, или должна быть выражением, которое разрешает значение datetime.
оба из главы СОЗДАТЬ Синтаксис СОБЫТИЯ
Вам нужно будет проверить, работает ли планировщик событий. Это может быть сделано с
SELECT @@event_scheduler;
Если результат должен быть OFF
и у вас есть право запустить планировщик событий, затем вы можете активировать планировщик событий с помощью
SET GLOBAL event_scheduler = 'ON';
Увидеть Конфигурация планировщика событий
Глобальная системная переменная event_scheduler определяет, является ли
Планировщик событий включен и работает на сервере. Имеет один из
эти 3 значения, которые влияют на планирование событий, как описано здесь:
- OFF: Планировщик событий остановлен. Поток планировщика событий не запускается, не отображается в выходных данных SHOW PROCESSLIST, и запланированные события не выполняются. OFF — это значение по умолчанию для event_scheduler.
Когда планировщик событий остановлен (event_scheduler выключен), его можно запустить, установив для значения event_scheduler значение ON. (См. Следующий пункт.)
ON: Планировщик событий запущен; поток планировщика событий запускается и выполняет все запланированные события.
ОТКЛЮЧЕНО: Это значение делает планировщик событий неработоспособным. Когда планировщик событий отключен, поток планировщика событий не запускается (и поэтому не отображается в выходных данных SHOW PROCESSLIST). Кроме того, состояние планировщика событий нельзя изменить во время выполнения.
Других решений пока нет …