create definer = root@`%` event update_timestampON on schedule every '30' minute do UPDATE sys_user_location SET timestamp = UNIX_TIMESTAMP() where user_id is not null 这段定时器创建是否存在问题
时间: 2024-02-23 12:02:48 浏览: 67
The user specified as a definer ('root'@'%') does not exist 解决方法
这个定时器创建语句存在一些问题,应该修改为以下形式:
```
CREATE EVENT update_timestamp
ON SCHEDULE EVERY 30 MINUTE
ON COMPLETION PRESERVE
DO
UPDATE sys_user_location SET timestamp = UNIX_TIMESTAMP() WHERE user_id IS NOT NULL;
```
修改后的语句中,主要做了以下几个修改:
1. `CREATE EVENT`开头,将`EVENT`关键字加上;
2. 增加了`ON COMPLETION PRESERVE`,表示当事件完成时保留它,以便下次再次使用;
3. 将`UPDATE`语句放在`DO`关键字后面,并增加`WHERE`条件,确保只更新`user_id`不为空的记录。
另外,需要注意的是,如果你的MySQL版本较旧,可能不支持事件调度器功能。需要确认你的MySQL版本是否支持事件调度器,可以使用以下命令查询:
```
SELECT @@event_scheduler;
```
如果返回值为`ON`,则表示事件调度器已经启用;如果返回值为`OFF`,则需要使用`SET GLOBAL event_scheduler = ON;`命令启用事件调度器。
阅读全文