【MySQL】ERROR 1418 This function has none of DETERMINISTIC, NO SQL, ...

【问题描述】:
在mysql创建function时经常出现的一个报错,

原因是开启了binary log,而且创建的函数没有指定如下之一的参数
DETERMINISTIC
READS SQL DATA
NO SQL

其完整报错是:
ERROR 1418 (HY000) : This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled
(you *might* want to use the less safe log_bin_trust_function_creators variable)

【解决方案】:
其解决办法,只要将log_bin_trust_function_creators设置为1即可。
log_bin_trust_function_creators参数是一个全局变量,只能用
SET @@GLOBAL.log_bin_trust_function_creators = 1; 这类global方式设置其值,该值为布尔类型:
1、ON、TRUE同义,同样0、OFF、FALSE同义。


Command-Line Format --log-bin-trust-function-creators
System Variable Name log_bin_trust_function_creators
Variable Scope Global
Dynamic Variable Yes
  Permitted Values
Type boolean
Default FALSE


这个参数在开启二进制日志时被应用,它认为存储函数的创建者必须为可信任的,反之写入二进制日志将认为是不安全的。
该参数默认为0,除非用户有SUPER权限,此外还需有CREATE ROUTINE和ALTER ROUNTINE权限,才可创建和修改存储函数。
如果设置为1,mysql不会强制有哪些创建限制,这个参数同样适用于TRIGGER的创建。




作者微信公众号(持续更新)

请使用浏览器的分享功能分享到微信等