MySQL游标打开失败

时间:2011-04-25 23:34:09

标签: mysql cursor

所以,我试图设置一个mysql存储过程来处理游标,无论出于什么原因,游标都无法打开(据我所知)导致SP停止。这是光标声明

  DECLARE cur_networks CURSOR FOR 
SELECT td.name FROM drupal5.users u 
LEFT JOIN drupal5.term_user tu 
ON u.uid = tu.uid 
LEFT JOIN drupal5.term_data td 
ON td.tid = tu.tid 
WHERE u.uid = tmpint;

tmpint是SP中先前声明的变量:

DECLARE tmpint int;

并且它的值设置在这里:

  SELECT t1.uid, t1.mail FROM drupal5.users t1 WHERE t1.name = Drupal_User_Name
      INTO tmpint, Drupal_Email;

然后我在脚本中做了很多其他事情,所有这些事情看起来都运行正常,但是当我到达这一行时:

OPEN cur_networks;

事情崩溃了。我已经启用了一些日志记录:http://www.bluegecko.net/mysql/debugging-stored-procedures/

哪个效果很好。如果我在OPEN命令之前终止输出,我可以看到一切看起来正常。如果我在OPEN命令后终止输出,则不会将任何内容保存到日志中,这表示该行是问题所在。我不知道为什么。这可能是荒谬的简单,但我似乎无法发现它。提前致谢。如果有必要发现问题,我会发布更多的SP。

1 个答案:

答案 0 :(得分:0)

问题是许可问题。执行查询的MySQL用户没有对term_user或term_data表的读访问权。

故事的寓意是,如果某个应用程序正在执行您的SP并且它无法正常工作,请务必尝试直接从MySQL控制台运行SP。这是从您的流程中获得反馈的唯一真实方式。