복붙노트

[SQL] MySQL의 DELIMITER 구문 오류

SQL

MySQL의 DELIMITER 구문 오류

이 MySQL의 스크립트는 여러 트리거를 설치합니다.

그것은 MySQL의 5.0.51b - 지역 사회를 실행하는 하나의 시스템에서 작동합니다. 레드햇 리눅스 GNU (I386)에 대한 MySQL의 14.12 DISTRIB 5.0.45을 실행하는 다른 컴퓨터가 DELIMITER 관련이있을 것으로 보인다이 오류 메시지와 함께 실패에 // ... // DELIMITER; 구문 :

스크립트 구문 (요약)입니다 :

DROP TRIGGER IF EXISTS trigger_name;
DELIMITER //
CREATE TRIGGER trigger_name BEFORE UPDATE ON table
FOR EACH ROW BEGIN
  -- Trigger logic goes here
END //
DELIMITER;

-- More trigger drop/create statements follow

무엇 스크립트 문제이며, 어떻게 그것을 해결할 수 있습니까?

해결법

  1. ==============================

    1.시험

    시험

    DELIMITER ;
    

    아니

    DELIMITER;
    

    당신은 실제로 지정하고; 구분 명령 인수 때문에 공간을 구비하지 거기 혼동 될 수있다.

  2. ==============================

    2.당신은 'DELIMITER'사이의 공간이 필요합니다 ';'

    당신은 'DELIMITER'사이의 공간이 필요합니다 ';'

    DELIMITER ;
    # not:
    DELIMITER;
    
  3. ==============================

    3.그냥 추가 기능, 다른 사람에게로 :

    그냥 추가 기능, 다른 사람에게로 :

    구분 기호는 하나의 문으로 서버에 전달하기 위해 전체 정의를 사용하는 데 필요합니다.

  4. ==============================

    4.MySQL의 I의 버전 구분 기호 명령을 사용할 때 같은 오류가 발생합니다 사용하지만,이 버전은 구분 기호를 처리합니다 ";" 문장 및 단락에 대한 "|" 내가 해결할 수있는 문제를 문제를 생각하는 저장 프로 시저 및 함수에 대한; 이 시도:

    MySQL의 I의 버전 구분 기호 명령을 사용할 때 같은 오류가 발생합니다 사용하지만,이 버전은 구분 기호를 처리합니다 ";" 문장 및 단락에 대한 "|" 내가 해결할 수있는 문제를 문제를 생각하는 저장 프로 시저 및 함수에 대한; 이 시도:

    DROP TRIGGER IF는 trigger_name의 존재;

    UPDATE ON 테이블 BEFORE 트리거 trigger_name의를 CREATE 각 행에 대해 BEGIN - 트리거 로직은 여기 간다 END |

    - 다른 진술이나 여기 기능

  5. ==============================

    5.흠 나는 비슷한 문제에 봉착했습니다. 나는 데비안 레니에서 mysqldump는이 5.0.51 5.0을 실행하고 실행 오픈 솔라리스에 가져 시도하고 같은 오류를받을 수 있나요. 그리고 DELIMITER이있다;

    흠 나는 비슷한 문제에 봉착했습니다. 나는 데비안 레니에서 mysqldump는이 5.0.51 5.0을 실행하고 실행 오픈 솔라리스에 가져 시도하고 같은 오류를받을 수 있나요. 그리고 DELIMITER이있다;

    버전 충돌?

  6. ==============================

    6.아래를보십시오.

    아래를보십시오.

    나는 그것이 목적을 해결해야 확신합니다.

    DELIMITER +
    CREATE TRIGGER STUDENT_INSERT_TRIGGER BEFORE INSERT ON FSL_CONNECTIONS 
    FOR EACH ROW BEGIN 
    INSERT INTO STUDENT_AUDIT 
    SET STUDENT_ID = NEW.STUDENT_ID, 
    MAC_ADDRESS = NEW.MAC_ADDRESS,
    IPADDRESS = NEW.IPADDRESS, 
    EMAIL_ID = NEW.EMAIL_ID , 
    START_TIME=NEW.START_TIME, 
    END_TIME=NEW.END_TIME, 
    STATUS=NEW.STATUS; 
    END; +
    

    위에서 우리는 DELIMITER를 사용하는 경우. 그것은의 형식이어야합니다

    DELIMITER +
    --
    BLOCK OF SQL WHATEVER YOU WANT TO MENTION
    --
    +
    
  7. from https://stackoverflow.com/questions/1102109/mysql-delimiter-syntax-errors by cc-by-sa and MIT license