2011-04-25 2 views
0

그래서 커서로 작업 할 수있는 mysql 저장 프로 시저를 설정하려고하는데 커서가 열리지 않아 커서가 열리지 않고 (내가 알 수있는 한) SP가 중지됩니다. 여기에 커서 선언MySQL 커서 열기 실패

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

문제가 허가 문제였습니다. 쿼리를 실행하는 MySQL 사용자는 term_user 또는 term_data 테이블에 대한 읽기 권한이 없습니다.

이야기의 도덕적 인 이유는 응용 프로그램이 SP를 실행 중이고 작동하지 않는 경우 MySQL 콘솔에서 SP를 직접 실행해야한다는 것입니다. 프로세스에서 피드백을 얻는 유일한 방법입니다.