错误信息: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)
错误原因
- DETERMINISTIC 不确定的
- No SQL 没有sql语句
- READS SQL DATA 只是读取数据
- MODIFIES SQL DATA 要修改数据
- CONTAINS SQL 包含了SQL语句
解决方法
- 方法一:
第一种是在创建子程序(存储过程、函数、触发器)时,声明为DETERMINISTIC或NO SQL与READS SQL DATA其中的一个。
示例:CREATE DEFINER = CURRENT_USER PROCEDURE `NewProc`()
DETERMINISTIC BEGIN.......
- 方法二:
(1)在执行sql语句前,在客户端执行如下语句:
SET GLOBAL log_bin_trust_function_creators = 1;
(2)在配置文件my.ini或my.cnf文件中加上以上字段即可。
方法二中两种解决方法的区别是:在(1)中从启数据库时就会失效,只能作为零时的决绝方法。在(2)中该设置一直有效,对配置文件进行修改后,需要重启服务。