【问题描述】:
在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/
,如需转载,请注明出处,否则将追究法律责任。