show triggers;可以看到这个触发器,但是drop trigger xx 
出现ERROR 1360 (HY000): Trigger does not exist这是为什么??????????????????

解决方案 »

  1.   

    你把SHOW ERRORS的结果贴出来。 有可能是磁盘空间不够。或者是数据文件被移除了,而数据字典里面还保留着这个TRIGGER的定义。我之前就遇到过。
      

  2.   

    指定数据库名,,,返回还是ERROR 1360 (HY000): Trigger does not exist
      

  3.   

    贴你的 
    show triggers;
    drop trigger xx; 的代码。
      

  4.   

    mysql> show triggers;
    +-------------------+--------+----------------+---------------------------------
    -------------------------------------------------------------------------+------
    --+---------+----------+----------------+
    | Trigger           | Event  | Table          | Statement                                 | Timing | Created | sql_mode | Definer
    |
    +-------------------+--------+----------------+---------------------------------
    -------------------------------------------------------------------------+------
    --+---------+----------+----------------+
    | Insert_vip        | INSERT | cdb_creditslog | Begin
      set @groupterms=(SELECT groupterms FROM discuz.cdb_memberfields where uid=new.
    uid);
      set @groupexpiry=(SELECT groupexpiry FROM discuz.cdb_members where uid=new.uid
    );
      set @groupid=(SELECT groupid FROM discuz.cdb_members where uid=new.uid);  if new.receive=980 or new.receive=1000 or  new.receive=1490 then
        if new.receive=980 then set @id=27; end if;
        if new.receive=1000 then set @id=22; end if;
        if new.receive=1490 then set @id=26; end if;
        update cdb_members set extgroupids=(case when LENGTH(extgroupids)=0 then @id
     else concat(@id,'      ',extgroupids) end),extcredits2=extcredits2-new.receive
    where uid=new.uid;    set @expiry=UNIX_TIMESTAMP(DATE_ADD(now(),INTERVAL 1 YEAR));    if LENGTH(@groupterms)>1 then
          set @terms=REPLACE(@groupterms,'}}',concat('i:',@id,';i:',@expiry,';}}'));      set @t=SUBSTRING(@terms,locate('s:3:"ext";a:',@terms)+12,5);
          set @t=SUBSTRING(@t,1,locate(':',@t)-1);
          set @tt=@t+1;
          set @terms=replace(@terms,concat('s:3:"ext";a:',@t),concat('s:3:"ext";a:',
    @tt));
        else
          set @terms=concat('a:1:{s:3:"ext";a:1:{i:',@id,';i:',@expiry,';}}');
         end if;
        update cdb_memberfields set groupterms=@terms where uid=new.uid;
      end if;  if new.receive=299 then
        set @id=24;
        set @expiry=UNIX_TIMESTAMP(DATE_ADD(now(),INTERVAL 1 MONTH));
        update cdb_members set groupid=@id,groupexpiry=@expiry,extcredits2=extcredit
    s2-new.receive where uid=new.uid;    if LENGTH(@groupterms)>1 then
          if LOCATE('a:2:{s:4:',@groupterms)>0 then
            set @terms=REPLACE(@groupterms,concat('s:4:"time";i:',@groupexpiry),conc
    at('s:4:"time";i:',@expiry));
            set @terms=REPLACE(@terms,concat('i:',@groupid,';i:',@groupexpiry),conca
    t('i:',@id,';i:',@expiry));
          else
            set @t=substring('a:1:{s:3:"ext";a:1:{i:22;i:1251561600;}}',18,LENGTH('a
    :1:{s:3:"ext";a:1:{i:22;i:1251561600;}}')-17);
            set @t=substring(@groupterms,18,LENGTH(@groupterms)-17);
            set @back=right(@t,LENGTH(@t)-LOCATE('{',@t));
            set @tt=left(@t,LOCATE(':',@t)-1);
            set @tt=@tt+1;
            set @terms=concat('a:2:{s:4:"main";a:1:{s:4:"time";i:',@expiry,';}s:3:"e
    xt";a:',@tt,':{i:',@id,';i:',@expiry,';',@back);
          end if;
        else
          set @terms=concat('a:2:{s:4:"main";a:1:{s:4:"time";i:',@expiry,';}s:3:"ext
    ";a:1:{i:24;i:',@expiry,';}}');
        end if;
        update cdb_memberfields set groupterms=@terms  where uid=new.uid;
      end if;
    end | AFTER  | NULL    |          | root@localhost |
    | insert_moderators | INSERT | cdb_moderators | Begin
    set NEW.adddate = NOW();
    end
                                      | BEFORE | NULL    |          | root@localhost
     |
    +-------------------+--------+----------------+---------------------------------
    -------------------------------------------------------------------------+------
    --+---------+----------+----------------+
    2 rows in set (0.00 sec)mysql> DROP TRIGGER discuz.Insert_vip;
    ERROR 1360 (HY000): Trigger does not exist
    mysql>
      

  5.   

    delete FROM information_schema.TRIGGERS where trigger_name='Insert_vip';这样行不
      

  6.   

    少了个Insert_vip.trn 文件。到其它数据库创建一个相同的TRIGGER,然后直接文件复制到 discuz 目录下,然后再 drop trigger Insert_vip