【发布时间】:2014-07-27 16:15:12
【问题描述】:
我已经设置了gearman udf for database 并尝试从 mysql 查询发送一个 Gearman 作业。通常它工作正常。从mysql查询的常规调用如下:
SELECT gman_do_background("eventName", "data");
现在,当我尝试从 mysql 触发器实现发出此调用时,问题正在发生。出现如下错误:
MySQL said: #1415 - Not allowed to return a result set from a trigger
所以,基本上如你所见,要么
- 还有其他方法可以调用 gearman 或
- 不知何故,我用里面的 gearman 选择调用做了一个虚假的更新调用。
我正在尝试编写非常简单的触发器,如下所示:
BEGIN
SELECT gman_do_background("eventName", "@data") FROM
(
SELECT @data := CONCAT(a,',',b,',',c) FROM mytablename WHERE status = 1
)
END
但是正如你所看到的,由于'SELECT'操作,它没有保存并抛出上述错误。
谁能帮助我是否有任何替代的 gearman 调用类型(“select”除外)或者有没有办法编写不影响任何 mysql 表/列的更新查询?提前致谢。
【问题讨论】:
-
发布您如何定义
gman_do_background。它似乎是一个函数。 -
嗨,Ravinder,它由 gearman 提供(您可以在链接上看到)。文档在这里:dl.dropboxusercontent.com/u/16060416/README.txt。是的,它被声明为 mysql 函数。
-
select ...是否在 trigger 正文中使用?如果是,它们不能是动作 terminating 语句,而只能作为在正文中使用的游标。 -
是的,正如我在帖子中提到的,gearman 库提到将其用作 'SELECT ...' 。并且看不到改变它的方法。那么,正如我在第二个选项中所说,有没有办法创建一个真正不会导致任何真正更新的虚假 UPDATE 语句?
-
除非您发布您的触发器主体是什么样的,否则没有人可以提供建议。
标签: mysql sql triggers gearman