ITPub博客

首页 > 数据库 > MySQL > 【MySQL】ERROR 1418 This function has none of DETERMINISTIC, NO SQL, ...

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

原创 MySQL 作者:神谕丶 时间:2015-12-22 14:48:01 0 删除 编辑
【问题描述】:
在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的创建。




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

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29773961/viewspace-1876828/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
微信公众号:神谕的暗影长廊

注册时间:2014-07-28

  • 博文量
    161
  • 访问量
    1195139