【问题标题】:How to change mysql delimiter through php如何通过php更改mysql分隔符
【发布时间】:2012-08-08 10:50:39
【问题描述】:

我在 mysql 终端中使用一组 sql 语句创建了一个事件,它工作正常。但我想从 php 脚本创建这个事件。我的查询如下。

DELIMITER |

CREATE EVENT e_cart

ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 3 MINUTE

DO

BEGIN

SET @var_orderid = '';

SET @var_orderid = (SELECT orderid FROM order WHERE id=308);

IF @var_orderid = NULL THEN

UPDATE order SET status=1 WHERE id=308;

END IF;
END |

DELIMITER ;

这导致:-

错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在 'DELIMITER | 附近使用的正确语法。 创建活动 e_cart 在第 1 行的 CUR' 上的时间表

如何从 php 脚本执行这个事件?

【问题讨论】:

  • 首先从 php 脚本运行delimiter |,然后是另一部分。
  • 如果我们在执行完分隔符|后执行事件部分,mysql如何识别事件中的多条语句。 IT 识别最多 CREATE EVENT e_cart ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 3 MINUTE DO BEGIN SET @var_orderid = '';其余部分将省略并给出错误

标签: php mysql events procedure


【解决方案1】:

DELIMITER 不是 MySQL 服务器命令,而是 MySQL CLI/Query Browser/Workbench 等。它只说明何时向 MySQL 服务器发送命令。

省略 DELIMITER 并将整个 CREATE EVENT 语句作为一个命令发送,它应该可以工作。

【讨论】:

  • 如果我们省略分隔符,则会出错。在 CURRENT_TIMESTAMP + INTERVAL 3 MINUTE DO BEGIN SET @var_orderid = '' 的时间表上创建事件 e_cart;当分号出现在语句中时,Mysql 认为语句已在事件中间完成。所以事件已经破坏并给出错误。错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 'SET cart_orderid = (SELECT orderid FROM bvira_bargain_subsession WHERE session_' 附近使用的正确语法
  • 它有效。谢谢卢克。我删除了分隔符并作为一个命令。
  • @Jeyakumar 你能分享一下你是如何在不使用分隔符替代的情况下解决分号问题的吗?
  • 对我来说这不是分隔符问题,而是我缺少 BEGIN 和 END 关键字,这使得事件只安排第一个语句。
猜你喜欢
  • 1970-01-01
  • 2012-07-31
  • 1970-01-01
  • 1970-01-01
  • 2017-06-16
  • 2010-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多