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 命令的主要内容,如果未能解决你的问题,请参考以下文章

在这种情况下出现问题 CORS 策略,而它适用于其他资源

phpmyadmin 权限仅适用于某些数据库

在 Rmarkdown 中动态创建选项卡不适用于 ggplot,而它适用于 plotly

VIM 适用于 LOG 文件的语法高亮配置

VIM 适用于 LOG 文件的语法高亮配置

mariadb 程序 phpmyadmin 错误