MYSQL 创建函数报错:1418
- 创建以下函数时,,报错1418
DELIMITER //
CREATE FUNCTION next_major_version
(app varchar(255), appId VARCHAR(255)) RETURNS int(11)
BEGIN
declare current integer;
if appId is null then
update app_version t set t.major_version = (@current := t.major_version + 1), t.minor_version = 0 where t.app = app and t.app_id is null;
else
update app_version t set t.major_version = (@current := t.major_version + 1), t.minor_version = 0 where t.app = app and t.app_id = appId;
end if;
return @current;
end//
DELIMITER ;
- 错误提示信息:
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_routine_creators全局系统变量为1。设置方法有三种:
1.在客户端上执行SET GLOBAL log_bin_trust_function_creators = 1;
2.MySQL启动时,加上–log-bin-trust-function-creators选贤,参数设置为1
3.在MySQL配置文件my.ini或my.cnf中的[mysqld]段上加log-bin-trust-function-creators=1
亲自测第一种有效