MySQL Cursor Open Fails - PullRequest
       2

MySQL Cursor Open Fails

0 голосов
/ 26 апреля 2011

Итак, я пытаюсь настроить хранимую процедуру 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, в журнал ничего не сохраняется, что указывает на проблему в строке. Понятия не имею почему. Возможно, это что-то нелепое, но я не могу этого заметить. Заранее спасибо. Я опубликую больше SP, если это необходимо, чтобы определить проблему.

1 Ответ

0 голосов
/ 27 апреля 2011

Проблема была в разрешении.Пользователь MySQL, выполняющий запрос, не имел доступа на чтение к таблицам term_user или term_data.

Мораль этой истории заключается в том, что если приложение выполняет ваш SP и оно не работает, обязательно попробуйте запустить SPпрямо из консоли MySQL.Это единственный реальный способ получить обратную связь от вашего процесса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...