在 MySQL 5.6.27 中创建触发器时出现奇怪的错误 [重复]

Posted

技术标签:

【中文标题】在 MySQL 5.6.27 中创建触发器时出现奇怪的错误 [重复]【英文标题】:Weird error when creating a trigger in MySQL 5.6.27 [duplicate] 【发布时间】: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 引擎。它做同样的事情,但比触发器更好。 【参考方案1】:

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

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

mysql> SET GLOBAL log_bin_trust_function_creators = 1;

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

【讨论】:

以上是关于在 MySQL 5.6.27 中创建触发器时出现奇怪的错误 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

当我尝试在 mysql 中创建触发器时出现语法错误

mysql在存储过程中创建触发器

怎么在Dbeaver中创建mysql 触发器

如何在 phpmyadmin 中创建触发器

使用 Where 子句在 MySql 中创建触发器

无法在mysql中创建触发器