使用php的Mysql事件错误

Posted

技术标签:

【中文标题】使用php的Mysql事件错误【英文标题】:Mysql event error using php 【发布时间】:2016-10-20 11:17:47 【问题描述】:

我正在尝试使用 php 脚本启动 mysql 事件。它使用 phpMyAdmin 工作(虽然我得到同样的错误)但不使用脚本。我收到以下错误:

您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解在第 1 行的“DELIMITER”附近使用的正确语法

DELIMITER |
CREATE EVENT myevent21222
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 MINUTE
DO
  BEGIN
    UPDATE `team` SET `reg` = '0' WHERE `id` = '1';
  END |
  # MySQL lieferte ein leeres Resultat zurück (d.h. null Datensätze).
DELIMITER ;

谁能找出问题所在?

在用户完成某项操作 5 分钟后更改数据库中的数据是否有任何替代方法?

【问题讨论】:

错误信息如何结束? 不要在代码中添加分隔符部分。 phpMyadmin 会自动为您完成这项工作 哦,现在应该可以了,我想。但我收到以下消息:“错误消息:准备好的语句协议尚不支持此命令”。好吧,我会尝试使用 mysqli_query ... 完美运行,谢谢! 您有 3 个问题,没有一个接受复选标记,也没有对那些对您有帮助的问题投赞成票? 【参考方案1】:

创建事件:

drop event if exists `myevent21222`;
DELIMITER |
CREATE EVENT myevent21222
  ON SCHEDULE EVERY 5 MINUTE STARTS '2016-01-01 00:00:00'
  ON COMPLETION PRESERVE
DO
  BEGIN
    UPDATE `team` SET `reg` = '0' WHERE `id` = '1';
  END |
  # MySQL lieferte ein leeres Resultat zurück (d.h. null Datensätze).
DELIMITER ;

开启事件处理程序:

SET GLOBAL event_scheduler = ON;  -- turn her on and confirm below

确认已开启:

show variables where variable_name='event_scheduler';

查看活动信息:

show events from so_gibberish2; -- note so_gibberish2 is my database name 

-- 显然在上面使用你的数据库名称

查看手册页了解ON COMPLETION PRESERVE 的含义以及其他内容。

禁用或启用它:

ALTER EVENT myevent21222 disable;
ALTER EVENT myevent21222 enable;

【讨论】:

已经通过删除分隔符部分来工作。不过,非常感谢! 很高兴你能成功。别忘了它还在运行:p【参考方案2】:

试试这个。

     DELIMITER |

     CREATE EVENT myevent21222
     ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 MINUTE
     DO
        BEGIN
        UPDATE `team` SET `reg` = '0' WHERE `id` = '1';
        END ;
       # MySQL lieferte ein leeres Resultat zurück (d.h. null Datensätze).
     DELIMITER |

【讨论】:

【参考方案3】:

您必须先设置 *DELIMITER**:

查看 phpmyadmin :Creating functions in phpMyAdmin - Error: access denied you need the super privilege for this operation

DELIMITER |

CREATE EVENT myevent21222
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 MINUTE
DO
  BEGIN
    UPDATE `team` SET `reg` = '0' WHERE `id` = '1';
  END |
  # MySQL lieferte ein leeres Resultat zurück (d.h. null Datensätze).
DELIMITER ;

【讨论】:

我之前没有在问题中看到 DELIMITER |,然后它就可以工作了 但不在 phpMyAdmin 中 并且 OP 改变了他的问题 其实没有,他只添加了其余的错误信息 这里是答案***.com/questions/16801550/…

以上是关于使用php的Mysql事件错误的主要内容,如果未能解决你的问题,请参考以下文章

mysql连接超时问题

PHP MySQL在Lat/Lng范围内查找事件

使用 AJAX 和 PHP 更新表单字段

使用 PHP 和 MySql 的 Docker - $servername 错误 [重复]

使用数组插入 MYSQL 时出现 PHP 错误

无法使用php连接错误连接到mysql:无法连接到'localhost'(10061)上的MySQL服务器[重复]