在 sql 命令上工作时出现 phpmyadmin 事件语法错误

phpmyadmin Event syntax error while it works on the sql command

从排名中删除; 改变 TABLE 排名 AUTO_INCREMENT = 1; 插入排名(用户名) select 用户名 来自玩家 按等级排序 LIMIT 100;

这是我想每 10 分钟执行一次的命令,我有一个 table 应该不断存储前 100 名玩家。如果我将命令输入 sql 命令行,它工作正常。但是,一旦我想在事件中使用相同的命令执行,就会出现此错误。

也许我不理解事件的局限性有人可以告诉我我做错了什么吗? 遗憾的是,我正在使用运行 Maria Db 的服务器。 10.1.48 所以我不能使用像 Rank()

这样的新 Windows 函数

看起来您正在用三个 SQL 语句定义一个事件,但没有在它们周围使用 BEGIN ... END 块。如果您的活动有多个语句,则需要使用 BEGIN 和 END。

所以你的事件定义应该是:

CREATE EVENT ...
DO BEGIN
  DELETE FROM Ranking; 
  ALTER TABLE Ranking AUTO_INCREMENT = 1; 
  INSERT INTO Ranking (username) select username from Players order by rank desc LIMIT 100;
END

我建议阅读:https://mariadb.com/kb/en/begin-end

我还会评论说你可以用 TRUNCATE TABLE Ranking; 替换前两个语句,这将删除所有行并比使用 DELETE 更快地重置自动增量。如果 table 中只有 100 行,您可能不会注意到差异,但如果 table 变大,您可能会注意到。