2009-07-09 27 views
14

このMySQLスクリプトは複数のトリガをインストールします。MySQL DELIMITER構文エラー

これは、MySQL 5.0.51b-communityを実行する1台のマシンで動作します。 redhat-linux-gnu(i386)用のMySQL 14.12 Distrib 5.0.45を実行している別のマシンでは、このエラーメッセージが表示され、DELIMITER // ... // DELIMITERに関連しているようです。構文:

ERROR 1064(42000)at line 272:SQL構文に誤りがあります。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックし、正しい構文が 'DELIMITER'の近くで使用するようにしてください。 trigger_nameが存在する場合、DROP TRIGGERが存在します。

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

(要約)スクリプトの構文の区切り文字は」ですか?

答えて

22

あなたが実際にDELIMITERコマンドの引数として;を指定して、それが混乱することができる空間を有するていない

DELIMITER ; 

ない

DELIMITER; 

を試してみてください。

+0

を私は1つのバージョンがありませんセミコロンで働いていた、他はちょうどセミコロンで働いていた、と別の、:) – Sophia

4

「DELIMITER」と「;」の間にスペースが必要です。

DELIMITER ; 
# not: 
DELIMITER; 
0

私は同様の問題を抱えています。私は5.0.51を実行しているDebian Lennyからmysqldumpを実行し、5.0を実行しているOpenSolarisにインポートして同じエラーを取得しようとします。そして、私はDELIMITERを持っています。

バージョン競合?

+0

を説明するためのおかげで私たちのためのバージョンに関係しているように見えた、ということに気づいていませんでしたセミコロンとスペースは必要ありませんでした。 – Sophia

2

はジャストアドオンとして、他の誰かのために:

区切り文字は、単一のステートメントとしてサーバーに渡される定義全体を有効にする必要があります。

0

以下を試してください。

私はそれが目的を解決すべきだと確信しています。

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を使用した場合です。それは私がデリミタコマンドを使用する場合、同じエラーが発生するが、このバージョンは、区切り文字を処理する使用のMySQLバージョンで

DELIMITER + 
-- 
BLOCK OF SQL WHATEVER YOU WANT TO MENTION 
-- 
+ 
1

の形でなければなりません「;」ステートメントと区切り記号 "|"私は問題を解決すると思うストアドプロシージャと関数のために。この試してみてください。

DROP TRIGGER IF EXISTS trigger_name;

CREATE TRIGGER trigger_name BEFORE UPDATE ON table FOR EACH ROW BEGIN -- Trigger logic goes here END |

-- other statements or functions here

+0

それはどんなバージョンでしょうか? –