所以,我试图设置一个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。
答案 0 :(得分:0)
问题是许可问题。执行查询的MySQL用户没有对term_user或term_data表的读访问权。
故事的寓意是,如果某个应用程序正在执行您的SP并且它无法正常工作,请务必尝试直接从MySQL控制台运行SP。这是从您的流程中获得反馈的唯一真实方式。