首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySQL中,“以下查询失败";"”意味着什么?

在MySQL中,“以下查询失败";"”意味着什么?
EN

Stack Overflow用户
提问于 2017-10-26 15:25:52
回答 2查看 387关注 0票数 0

在试图更新触发器时,MySQL告诉我查询";“失败。";“在MySQL的视图中,即使是一个查询,我也无法理解。

确切的信息是:

以下查询失败:";“MySQL说:#1065 -查询为空

下面是新的触发器(插入后):

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-26 15:36:56

结果,我正在更新的触发器在此期间被删除了,所以我正在更新一个已经不存在的触发器。

刷新页面后,我发现(触发器已从触发器列表中删除)。

我只是重新创建了扳机,它起了作用。

票数 0
EN

Stack Overflow用户

发布于 2017-10-26 15:34:26

我试着创建了你展示的过程,但是我没有发现任何错误。

有关“空语句”的错误发生在试图通过API执行查询时,但查询字符串是空的。

我可以这样复制mysql客户机中的错误:

代码语言:javascript
复制
mysql> set @s = '';

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

因此,我建议您不要查看存储过程,而是查看正在执行该过程的任何代码,并在每次尝试执行查询时检查是否提交了一个非空字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46958210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档