加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

解决MYSQL创建函数出错的难题

发布时间:2022-03-03 22:11:23 所属栏目:MySql教程 来源:互联网
导读:小编给大家分享一下解决MYSQL创建函数出错的问题,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧! 例一: 目前在项目中,执行创建mysql的函数出错, mysql 创建函数出错信息如下: Error Code: 1227. Access denied; you need (at least one o
       小编给大家分享一下解决MYSQL创建函数出错的问题,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!
 
例一:
 
     目前在项目中,执行创建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是别人给的,在别人环境没问题,在自己的环境就有可能)。
 
 
-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中断。

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!