MySQL ERROR 1418 的解决方法(自定义函数)

1.问题背景:

在创建自定义函数时遇到错误:

创建一个现实时间的函数:
create function show_time() returns varchar(30)
return date_format(now(), ‘%Y年%m月%d日 %H时%i分%s秒’);

Error Code : 1418
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参数缺省0,是不允许function的同步的,一般我们在配置repliaction的时候,都忘记关注这个参数,这样在master更新funtion后,slave就会报告错误,然后slave stoped。

2.解决方法:

方法 1.登陆mysql数据库

 set global log_bin_trust_function_creators = 1;

方法 2.在创建子程序(存储过程、函数、触发器)时,声明为DETERMINISTIC或NO SQL与READS SQL DATA中的一个,

格式如下:

> CREATE DEFINER = CURRENT_USER PROCEDURE `new_pro`()
>     DETERMINISTIC 
>     BEGIN 
>      #Routine body goes here... 
>     END;
> CREATE DEFINER = CURRENT_USER FUNCTION `new_FUNC`()
> RETURNS VARCHAR(20)
>     DETERMINISTIC 
>     BEGIN 
>      #Routine body goes here... 
>     END;

3.解决后如图:

在这里插入图片描述
参考:https://blog.csdn.net/yongsheng0550/article/details/6250466

猜你喜欢

转载自blog.csdn.net/Artificial_idiots/article/details/106752583
今日推荐