phpmyadmin 事件语法错误,而它适用于 sql 命令
Posted
技术标签:
【中文标题】phpmyadmin 事件语法错误,而它适用于 sql 命令【英文标题】:phpmyadmin Event syntax error while it works on the sql command 【发布时间】:2021-09-28 02:47:45 【问题描述】:从排名中删除; ALTER TABLE 排名 AUTO_INCREMENT = 1; 插入排名(用户名) 选择用户名 来自玩家 按等级排序 desc LIMIT 100;
这是我想每 10 分钟执行一次的命令,我有一个表应该不断存储前 100 名玩家。如果我将命令输入到 sql 命令行中,它工作正常。但是一旦我想在出现此错误的情况下使用相同的命令来执行。
也许我不了解事件的局限性,有人可以告诉我我做错了什么吗? 遗憾的是,我正在使用运行 Maria Db 的服务器。 10.1.48 所以我不能使用新的 Windows 函数,比如 Rank()
【问题讨论】:
【参考方案1】:看起来您正在使用三个 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
更快地删除所有行并重置自动增量。如果表中只有 100 行,您可能不会注意到差异,但如果表变大,您可能会注意到。
【讨论】:
非常感谢,是的,我知道 Truncate beeeing 更好,但显然只有当表足够大并且此表将始终保持在 100 时它才会更好。但我不确定那是否是真的,只是我读到的以上是关于phpmyadmin 事件语法错误,而它适用于 sql 命令的主要内容,如果未能解决你的问题,请参考以下文章