【问题标题】:Remove trigger from information_schema DB从 information_schema 数据库中删除触发器
【发布时间】:2012-09-16 13:31:51
【问题描述】:

在学校,我们正在学习用 SQL 编写触发器,我写了一个,但它是错误的。因此,我想删除它。

我尝试了以下方法:

mysql> use information_schema
Database changed
mysql> drop trigger log;
ERROR 1360 (HY000): Trigger does not exist

但正如您所见,我收到一个错误,因为它不存在。 当我使用 Sequel Pro 并使用select * from triggers; 检查该表时,它显示存在一个名为 log 的触发器。见截图:

我尝试通过右键单击删除它并单击“删除行”,但随后出现以下错误:

无法删除行。

MySQL 说:用户 'robbert'@'localhost' 拒绝访问数据库 'information_schema'

我应该如何删除该触发器?明明就在那里?

【问题讨论】:

    标签: mysql sql database triggers


    【解决方案1】:

    TRIGGER_SCHEMA 列表示定义触发器的数据库:您需要USE db5,而不是INFORMATION_SCHEMA(或者在DROP TRIGGER 语句中限定触发器名称):

    USE db5;
    DROP TRIGGER log;
    

    或者:

    DROP TRIGGER db5.log;
    

    【讨论】:

      【解决方案2】:

      尝试这样使用:

      语法:

      DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name
      

      在你的情况下:

       DROP TRIGGER [IF EXISTS] db5.log;
      

      发生错误是因为您使用了错误的架构名称。架构名称应为 db5 而不是 information_schema

      【讨论】:

        【解决方案3】:

        您的触发器位于 db5 模式中。您需要在删除之前使用该架构

        use db5;
        drop trigger log;
        

        或在 drop 语句中使用完全限定的触发器名称

        drop trigger db5.log
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-12-19
          • 1970-01-01
          • 2015-09-30
          • 2014-09-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-02
          相关资源
          最近更新 更多