2012-01-26 4 views
5

MySQL 명령 구분 기호를 변경하려고하므로 다중 명령이 포함 된 프로 시저를 만들 수 있습니다. 그러나, delimiter 명령은 MySQL 5.1.47에서 인식되지 않는 것처럼 보입니다. MySQL 5.0.91에서 테스트했는데 거기에서 작동했습니다.MySQL 구분 기호 구문 오류

DELIMITER //; 
DELIMITER ;// 

나는이 상황을 phpmyadmin에서 실행하려고합니다. 이벤트 (CREATE EVENT)를 사용해야하므로 대신 5.0.91을 사용하는 것은 옵션이 아닙니다.

오류 메시지 :

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER //' at line 1 

가 작동하지 않는 이유가 있나요, 또는 같은 일 (여러 쿼리를 갖는 프로 시저를 작성)을 달성 할 수있는 대안이 무엇입니까?

+0

나는'DELIMITER'가 실제로는 MySQL 명령이 아니라는 것을 읽었습니다. 그것은 클라이언트 명령입니다. 이것은 PHPMyAdmin이 MySQL과 반대로이를 지원해야한다는 것을 의미합니까? – Patrickdev

답변

13

DELIMITER은 MySQL의 명령이 아닙니다. MySQL 클라이언트가 지원해야하는 명령입니다. 나는 그것을 지원하지 않는 PHPMyAdmin 2.8.2.4를 실행하고있었습니다. 현재 3.4.9 버전의 최신 버전으로 업그레이드하면 정상적으로 작동합니다. 귀하의 MySQL 버전은 DELIMITER과 아무 관련이 없습니다. 지원 여부는 상관 없습니다.

2

당신은 구분 문은 MySQL 문서에 정확히 "Defining Stored Programs"에 따라

DELIMITER // 

procedure here etc 

DELIMITER ; 

를 구분 할 필요가 없습니다.

버전을 제어 할 수있는 경우 최신 버전은 5.5.20입니다. 왜 그것을 사용하지 않습니까?

편집 :

오류 메시지가 이전 문에서 오류를 표시 ...이 할 수없는 경우 보이는 힘은 따라서

; /* <- force previous statement termination */ DELIMITER // 

procedure here etc 

DELIMITER ; 
+0

버전을 제어 할 수 없으며 다른 버전을 실행하는 여러 환경이 있습니다. 또한 게시 한 제안이 작동하지 않았습니다. 같은 오류 메시지가 나타납니다. – Patrickdev

+0

@Patrickdev : 오류가 종료되지 않을 이전 성명서에 표시됩니다 ... – gbn

+1

나는이 명령으로 이것을 테스트했습니다. 이전의 진술은 없습니다. 게다가 구문 문제가 있다면 다른 버전에서도 오류가 발생하지 않을까요? – Patrickdev