2014-12-19 5 views
0

내가 MySQL을 사용하고 내 저장 프로 시저의 일부로서 아래의 코드를 쓰고 있어요 : 그것은 내 로컬 시스템에서 잘 실행MySql 저장 프로 시저 구문 오류?

SET @label_id_configuration = 0; 
    IF NOT (SELECT count(1) FROM `system_labels` WHERE `name` = 'configuration') THEN 
    SELECT @label_id_configuration := Max(`label_id`) + 1 FROM `system_labels`; 
    INSERT INTO `system_labels` (`label_id`, `name`) VALUES (@label_id_configuration, 'Configuration'); 
    END IF; 

. 그러나 빌드 서버에서는 실패합니다. 스토어드 프로 시저의 나머지 부분은 잘 실행되어 권한, 데이터베이스, 테이블 존재 문제가 없음을 의미합니다.

아무에게도 서버에서받은 오류 메시지 문제를 해결할 수있는 힌트를 줄 수 있습니까? 이 erroring 왜

Error on or near line 151: error in SQL script data_update.sql: @label_id_configuration:=`label_id` 6 
+0

은 왜 system_labels' 'INTO INSERT ('label_id','name') SELECT 최대 ('label_id') + 1, '설정 ' 'FROM system_labels'을 시도하지 않습니다. –

+0

또한 if 조건을 점검해야합니까? –

답변

0

감사합니다.

운이없는 많은 조사가 있은 후. 위의 스크립트 대신 삽입 무시 및 바꾸기를 사용하기로 결정했습니다.

1

는 나도 몰라,하지만 난 (도시 코드 부여)이 모두 해당 변수의 사용을 근절 할 수있는 방법 볼 수 있습니다 모든 도움을

IF NOT EXISTS(SELECT * FROM `system_labels` WHERE `name` = 'configuration') THEN 
    INSERT INTO `system_labels` (`label_id`, `name`) 
    SELECT Max(`label_id`) + 1, 'Configuration' FROM `system_labels` 
END IF;