2017-10-26 7 views
0

トリガを更新しようとしている間、MySQLはクエリに「;」が失敗しました。 。「次のクエリは失敗しました」「;」という意味ですか?

正確なメッセージは次のとおりです。

The following query has failed: ";" MySQL said: #1065 - Query was empty 

ここで(INSERT AFTER)新しいトリガーがあります:

BEGIN 
DECLARE vIdPlacet VARCHAR(40); 
DECLARE vTypeTravaux VARCHAR(32); 
DECLARE vEssence VARCHAR(3) DEFAULT '-'; 
DECLARE vClasseHau VARCHAR(5) DEFAULT '-'; 
DECLARE vNoMesurag int; 

DECLARE new_id_parcelle INT UNSIGNED DEFAULT 0; 
DECLARE new_no_microplacette INT UNSIGNED DEFAULT 0; 

IF NEW.deleted = 0 THEN 
    SELECT id_parcelle, no_microplacette 
    INTO new_id_parcelle, new_no_microplacette 
    FROM microplacette 
    WHERE id_microplacette = NEW.id_microplacette; 

    SELECT travaux, no_mesurag, id__placet 
    INTO vTypeTravaux, vNoMesurag, vIdPlacet 
    FROM secteur 
    LEFT JOIN parcelle ON secteur.id_secteur = parcelle.id_secteur 
    WHERE id_parcelle = new_id_parcelle; 

    IF vTypeTravaux = 'inventaire' THEN 
     SELECT abbreviation INTO vEssence FROM essences WHERE _id = NEW.id_essence; 


     IF NEW.hauteur_15 = 1 THEN 
      SET vClasseHau = '15CM+'; 
     END IF; 

     IF (SELECT COUNT(*) FROM imported_pres_ess WHERE id__placet = vIdPlacet AND 
                  caracteris = '-' AND 
                  classe_hau = vClasseHau AND 
                  essence = vEssence AND 
                  no_mesurag = vNoMesurag AND 
                  no_micro_p = new_no_microplacette) = 0 THEN 
      INSERT INTO imported_pres_ess (id__placet, caracteris, classe_hau, essence, no_mesurag, no_micro_p) 
        VALUES (vIdPlacet, '-', vClasseHau, vEssence, vNoMesurag, new_no_microplacette); 
     END IF; 


     IF (SELECT COUNT(*) FROM imported_semi_gau WHERE id__placet = vIdPlacet AND 
                  classe_hau = vClasseHau AND 
                  essence = vEssence AND 
                  no_mesurag = vNoMesurag AND 
                  no_micro_p = new_no_microplacette) = 0 THEN 
      INSERT INTO imported_semi_gau (id__placet, classe_hau, essence, no_mesurag, no_micro_p) 
        VALUES (vIdPlacet, vClasseHau, vEssence, vNoMesurag, new_no_microplacette); 
     END IF; 


     IF NEW.diametre > 0 THEN 
      SET vClasseHau = 'D2_D8'; 
     ELSE 
      SET vClasseHau = '-'; 
     END IF; 

     IF (SELECT COUNT(*) FROM imported_pres_ess WHERE id__placet = vIdPlacet AND 
                  caracteris = '-' AND 
                  classe_hau = vClasseHau AND 
                  essence = vEssence AND 
                  no_mesurag = vNoMesurag AND 
                  no_micro_p = new_no_microplacette) = 0 THEN 
      INSERT INTO imported_pres_ess (id__placet, caracteris, classe_hau, essence, no_mesurag, no_micro_p) 
        VALUES (vIdPlacet, '-', vClasseHau, vEssence, vNoMesurag, new_no_microplacette); 
     END IF; 


     IF (SELECT COUNT(*) FROM imported_semi_gau WHERE id__placet = vIdPlacet AND 
                  classe_hau = vClasseHau AND 
                  essence = vEssence AND 
                  no_mesurag = vNoMesurag AND 
                  no_micro_p = new_no_microplacette) = 0 THEN 
      INSERT INTO imported_semi_gau (id__placet, classe_hau, essence, no_mesurag, no_micro_p) 
        VALUES (vIdPlacet, vClasseHau, vEssence, vNoMesurag, new_no_microplacette); 
     END IF; 
    END IF; 
END IF; 
END 

私は必要なすべての詳細を与えている、SO私のポストをさせませんにもかかわらず、私のポストは大部分がタラですeと私はいくつかの詳細を追加する必要がありますので、私はこの無駄な段落を追加しています。

答えて

0

私は更新中のトリガーが削除されているので、もう存在しなかったトリガーを更新していました。

ページを更新した後に見つかった(トリガーがトリガーリストから消えた)。

私は単にトリガーを再作成して機能しました。

0

あなたが表示する手順を作成しようとしましたが、エラーは発生しません。

API経由でクエリを実行しようとすると「空文」というエラーが発生しますが、クエリ文字列は空です。

私は、mysqlクライアントでこのようにエラーを複製することができます

mysql> set @s = ''; 

mysql> prepare stmt from @s; 
ERROR 1065 (42000): Query was empty 

そうたびに、私はあなたがストアドプロシージャではありません見てください、しかし、あなたはからこれを実行しているものは何でもコード、およびいることを確認します空でない文字列を送信するクエリを実行しようとします。

関連する問題