Error
Error Code:
1544
MariaDB Error 1544: Past Event Execution
Description
This error indicates that a scheduled MariaDB event was configured to execute at a time that has already occurred. When this happens, MariaDB automatically disables the event to prevent unexpected behavior or immediate execution. It typically arises from incorrect event scheduling or server time discrepancies.
Error Message
Event execution time is in the past. Event has been disabled
Known Causes
3 known causesIncorrect Event Definition
The `STARTS` or `ENDS` timestamp defined for the event is set to a date and time that has already passed.
Server Clock Discrepancy
The system clock on the MariaDB server host was altered (e.g., set backward), causing previously valid event schedules to become invalid.
Prolonged Server Downtime
The MariaDB server was offline for an extended period, causing it to miss an event's scheduled execution time.
Solutions
4 solutions available1. Manually Re-enable and Reschedule the Event easy
Directly re-enable the disabled event and set a future execution time.
1
Identify the event that has been disabled. You can find this by querying the `mysql.event` table.
SELECT EVENT_NAME, EVENT_SCHEMA, EVENT_STATUS FROM mysql.event WHERE EVENT_STATUS = 'DISABLED';
2
Alter the event to re-enable it and set a new execution time in the future. Replace `your_event_name`, `your_schema`, and the desired `future_datetime`.
ALTER EVENT your_schema.your_event_name ON SCHEDULE AT 'YYYY-MM-DD HH:MM:SS' ENABLE;
-- Example:
-- ALTER EVENT my_database.daily_cleanup ON SCHEDULE AT '2023-10-27 03:00:00' ENABLE;
3
Verify that the event is now enabled and scheduled correctly.
SELECT EVENT_NAME, EVENT_SCHEMA, EVENT_STATUS, NEXT_EXECUTION FROM mysql.event WHERE EVENT_NAME = 'your_event_name';
2. Adjust Event Schedule to Current Time or Future easy
Modify the event's schedule to execute immediately or at a specific future time.
1
First, check the event's current schedule and status.
SHOW EVENTS FROM your_schema LIKE 'your_event_name';
-- Or query the mysql.event table:
SELECT EVENT_NAME, EVENT_SCHEMA, EVENT_STATUS, EXECUTE_AS, EVENT_ORIGIN, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EVENT_INTERVAL, EVENT_DOES_MODIFY_SQL_DATA, EVENT_COMMENT, CREATED, LAST_ALTERED, NEXT_EXECUTION FROM mysql.event WHERE EVENT_NAME = 'your_event_name';
2
If the event is `DISABLED` and its `NEXT_EXECUTION` is in the past, alter it to run at a future time. You can also use `CURRENT_TIMESTAMP` to run it as soon as possible (which might be immediately if the scheduler is running).
ALTER EVENT your_schema.your_event_name ON SCHEDULE AT CURRENT_TIMESTAMP ENABLE;
-- Or to schedule for a specific future time:
-- ALTER EVENT your_schema.your_event_name ON SCHEDULE AT 'YYYY-MM-DD HH:MM:SS' ENABLE;
3
Confirm the event is re-enabled and has a future `NEXT_EXECUTION` time.
SELECT EVENT_NAME, EVENT_STATUS, NEXT_EXECUTION FROM mysql.event WHERE EVENT_NAME = 'your_event_name';
3. Recreate the Event with a Corrected Schedule medium
Drop and recreate the event with a properly defined future schedule.
1
Retrieve the event's definition to facilitate recreation.
SHOW CREATE EVENT your_schema.your_event_name;
2
Drop the existing disabled event.
DROP EVENT your_schema.your_event_name;
3
Recreate the event using the definition obtained in the first step, ensuring the `ON SCHEDULE` clause specifies a future execution time.
DELIMITER $$
CREATE EVENT your_schema.your_event_name
ON SCHEDULE AT 'YYYY-MM-DD HH:MM:SS' -- Specify a future timestamp
DO
-- Your event body here
BEGIN
-- SQL statements for your event
END$$
4
Verify the event has been created successfully and is scheduled for the future.
SHOW EVENTS FROM your_schema LIKE 'your_event_name';
-- Or:
SELECT EVENT_NAME, EVENT_STATUS, NEXT_EXECUTION FROM mysql.event WHERE EVENT_NAME = 'your_event_name';
4. Ensure MariaDB Event Scheduler is Running medium
Verify that the MariaDB event scheduler is active and configured to start automatically.
1
Check the current status of the event scheduler.
SHOW VARIABLES LIKE 'event_scheduler';
2
If `event_scheduler` is `OFF`, enable it. This change is typically session-specific unless configured in `my.cnf` or `my.ini`.
SET GLOBAL event_scheduler = ON;
3
To ensure the scheduler starts automatically on server startup, edit your MariaDB configuration file (e.g., `/etc/my.cnf`, `/etc/mysql/my.cnf`, `my.ini` on Windows). Add or modify the following line under the `[mysqld]` section:
[mysqld]
event_scheduler = ON
4
After modifying the configuration file, restart the MariaDB service for the changes to take effect.
# On Linux (systemd):
systemctl restart mariadb
# On Linux (SysVinit):
service mariadb restart
# On Windows (Services):
# Open services.msc, find MariaDB, and restart.
5
Re-verify the event scheduler status after restarting the service.
SHOW VARIABLES LIKE 'event_scheduler';