Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL 5.1不允许我在限制中使用declare。我尝试了所有的替代方法,但没有任何效果,我无法更新MYSQL版本_Mysql_Sql - Fatal编程技术网

MySQL 5.1不允许我在限制中使用declare。我尝试了所有的替代方法,但没有任何效果,我无法更新MYSQL版本

MySQL 5.1不允许我在限制中使用declare。我尝试了所有的替代方法,但没有任何效果,我无法更新MYSQL版本,mysql,sql,Mysql,Sql,MySQL 5.1不允许我在limit中使用声明的变量。我尝试了所有的替代方法,但没有任何效果,我无法更新MYSQL版本。在MySql 5.1中,是否有其他方法可以运行此查询而不出错。我在MySql 5.6及更高版本中尝试了相同的查询,效果很好 delimiter $$ CREATE event `cleaner` ON schedule every 7 day enable do BEGIN DECLARE `logCount` int(11); SET `logCount` = (Selec

MySQL 5.1不允许我在limit中使用声明的变量。我尝试了所有的替代方法,但没有任何效果,我无法更新MYSQL版本。在MySql 5.1中,是否有其他方法可以运行此查询而不出错。我在MySql 5.6及更高版本中尝试了相同的查询,效果很好

delimiter $$
CREATE event `cleaner` ON schedule every 7 day enable do
BEGIN
DECLARE `logCount` int(11);
SET `logCount` = (Select count(*) from `eventlogs`) - 5000;
DELETE FROM `eventlogs` ORDER BY `EventID` ASC LIMIT `logCount`;
END;
您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了解使用“logCount”的正确语法;
在第5行结束,选择第5001个最大事件ID,然后删除所有较小或相等的事件:

BEGIN
    DECLARE `lastEventID` int(11);
    SET `lastEventID` = (
        Select `EventID`
        from `eventlogs`
        ORDER BY `EventID` DESC
        LIMIT 1
        OFFSET 5000
    );
    DELETE FROM `eventlogs` WHERE `EventID` <= `lastEventID`;
END;

您想保留最多5000行吗?我只想保留最新的5000行并删除旧日志。EventID是自动递增的。这非常有效。你是救世主。我被困在这里好几个小时了。非常感谢。