为什么创建自定义函数会出现: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)
时间: 2023-11-06 16:17:21 浏览: 321
mysql 报错This function has none of DETERMINISTIC解决方案
5星 · 资源好评率100%
这是因为在MySQL的安全模式下,如果在创建自定义函数时没有指定是否是确定性函数(DETERMINISTIC)、是否有副作用(NO SQL)或者只读(READS SQL DATA),并且MySQL开启了二进制日志(binary logging),则会出现该警告。
这是因为在二进制日志中保存的是对数据库进行操作的二进制数据,如果自定义函数不是确定性的(即不同输入可能会得到不同的输出)或者具有副作用(可能会修改数据库数据),则二进制日志中记录的函数执行结果可能会与实际执行结果不同,从而导致数据不一致。
为了避免这种情况,MySQL提供了一个名为log_bin_trust_function_creators的变量,可以设置为1来关闭该警告。但是需要注意的是,关闭该警告可能会带来一定的安全风险,因此建议在必要时才关闭该警告。
阅读全文