MYSQL函数错误–ERROR 1418 (HY000) at line 31: 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)

今天在用工具创建mysql函数时,所有的代码都写完了,保存的时候却发现了如下错误:

ERROR 1418 (HY000) at line 31: 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)

这下就杯具了,赶快把写好的代码保存一份,然后再找问题所在,经过不断的折腾终于找到了解决的方法就是在创建时加一句话就可以了:

CREATE DEFINER=zs@192.168.0.103 FUNCTION iswave(muid int,msid int) RETURNS tinyint(5)
READS SQL DATA
begin
select * from test;
end

添加上红色的文字部分就可以了,一定要加对位置哦!大家可以根据实际情况来选择如下的参数

分析原因:

这是我们开启了bin-log, 我们就必须指定我们的函数是否是
1 DETERMINISTIC 不确定的
2 NO SQL 没有SQl语句,当然也不会修改数据
3 READS SQL DATA 只是读取数据,当然也不会修改数据
4 MODIFIES SQL DATA 要修改数据
5 CONTAINS SQL 包含了SQL语句

后来在网上查了还有另外一种解决方法,但是没有验证过,第一种方法完全可以解决

修改my.ini文件,在mysqld下面加上了log_bin_trust_function_creators=1,记得重启服务器

你的评论是对我最大的鼓励