案例一:
现在在项目中,实行建立mysql的函数失足,
mysql 建立函数失足信息以下:
Error Code: 1227. Access denied; you need (at least one of) the SUPER privilege(s) for this operation
起首搜检建立函数的功用是不是开启,搜检是不是开启建立功用的SQL以下:
-- 检察是不是开启建立函数的功用 show variables like '%func%'; -- 开启建立函数的功用 set global log_bin_trust_function_creators = 1;
实行完SQL以后发明已开启了,随搜检本身的SQL是不是写错(因为SQL是他人给的,在他人环境没题目,在本身的环境就有能够)。
倏忽发明了确实是SQL涌现题目,因为他建立的SQL有指定用户,所以致使涌现题目,以下是他的SQL:
DROP FUNCTION IF EXISTS `nextval`; DELIMITER ;; CREATE DEFINER=`devop`@`%` FUNCTION `nextval`(`seq_name` VARCHAR(50)) RETURNS varchar(20) CHARSET utf8 BEGIN DECLARE seq_max BIGINT(20); UPDATE sequenceconftable SET `max` = `max` + NEXT WHERE NAME = seq_name; SELECT `max` INTO seq_max FROM sequenceconftable WHERE NAME = seq_name ; RETURN seq_max; END ;; DELIMITER ;
因为CREATE_FUNCTION范例,能够发明就是DEFINER这个参数是能够指定数据库用户的,然则本身的库却不是这个用户,所以致使题目。
现在题目已处置惩罚。
-EOF-
案例二:
在MySQL建立用户自定义函数时,报以下毛病:
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_function_creators 默以为0,是不允许function的同步的,开启这个参数,就能够建立胜利了。
mysql> show variables like '%fun%'; +---------------------------------+-------+ | Variable_name | Value | +---------------------------------+-------+ | log_bin_trust_function_creators | ON | +---------------------------------+-------+ 1 row in set (0.00 sec) mysql> set global log_bin_trust_function_creators=1; Query OK, 0 rows affected (0.00 sec) mysql> show variables like '%fun%'; +---------------------------------+-------+ | Variable_name | Value | +---------------------------------+-------+ | log_bin_trust_function_creators | ON | +---------------------------------+-------+ 1 row in set (0.00 sec)
如果是在有master上开启了该参数,记得在slave端也要开启这个参数(salve须要stop后再从新start),否则在master上建立函数会致使replaction中断。
案例三:
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) (0 ms taken)
剖析:
依据体系提醒,致使该毛病的缘由多是一个平安设置方面的设置,查手册log_bin_trust_function_creators参数缺省0,是不允许function的同步的,平常我们在设置repliaction的时刻,都遗忘关注这个参数,如许在master更新funtion后,slave就会报告毛病,然后slave stoped。
处置惩罚历程:
上岸mysql数据库
> set global log_bin_trust_function_creators = 1; > start slave;
跟踪mysql的启动日记,slave一般运转,题目处置惩罚。
相干引荐:
mysql建立函数涌现1418毛病的处置惩罚办法
mysql-php衔接数据库失足,什么缘由
Mysql 数据迁徙后 启动失足
以上就是MYSQL建立函数失足怎样处置惩罚的细致内容,更多请关注ki4网别的相干文章!