【问题标题】:Weird error when creating a trigger in MySQL 5.6.27 [duplicate]在 MySQL 5.6.27 中创建触发器时出现奇怪的错误 [重复]
【发布时间】:2018-08-24 14:43:14
【问题描述】:

大家好,我正在尝试在我的一个数据库表中创建这个简单的触发器,但由于某种原因,我收到了这个奇怪的错误。我已经搜索过它,但我还没有找到解决这个问题的方法。有人能帮我吗?谢谢。

DELIMITER $$

CREATE DEFINER=CURRENT_USER TRIGGER `dataset`.`student_BEFORE_DELETE` BEFORE 
DELETE ON `student` 
FOR EACH ROW
BEGIN
delete from student_grades where std_id = old.student_id;
END
$$

DELIMITER ;

错误:

ERROR 1419 (HY000): You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

【问题讨论】:

  • “出于某种原因” - 错误消息已经告诉您原因。
  • 我建议您使用带有 foreiyn 键和 ON DELETE CASADE 的 InnoDB 引擎。它做同样的事情,但比触发器更好。

标签: mysql sql triggers


【解决方案1】:

MySQL 引擎说用户需要比执行更多的权限。这是因为创建一些修改表的触发器(如“删除”)将在执行时被记录(在此处阅读更多信息Binary Logging of Stored Programs

其中一个解决方案在链接内,简而言之,您可以在创建触发器之前执行此命令

mysql> SET GLOBAL log_bin_trust_function_creators = 1;

但也许您需要一些权限来更改 MySQL 上的全局变量。

【讨论】:

    猜你喜欢
    • 2016-01-09
    • 2011-06-27
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 2017-02-09
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多