千家信息网

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

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,小编给大家分享一下解决MYSQL创建函数出错的问题,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!例一:目前在项目中,执行创建mysql的函数出错,mysql 创建函数出错信息如下:Err
千家信息网最后更新 2026年11月02日解决MYSQL创建函数出错的问题

小编给大家分享一下解决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是别人给的,在别人环境没问题,在自己的环境就有可能)。

突然发现了确实是SQL出现问题,由于他创建的SQL有指定用户,所以导致出现问题,以下是他的SQL:

DROP FUNCTION IF EXISTS `nextval`;DELIMITER ;;CREATE DEFINER=`devop`@`%` FUNCTION `nextval`(`seq_name` VARCHAR(50)) RETURNS varchar(20) CHARSET utf8BEGIN  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创建函数出错的问题有了一定的了解,想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

函数 问题 参数 功能 用户 错误 检查 安全 数据 数据库 案例 环境 篇文章 同步 配置 成功 信息 原因 完了 就是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网与科技 中智农互联网科技 厦门中拓互联网络科技有限公司 凡科互联网科技 奔汉互联网科技 互联网科技创新企业排名 北京大学互联网科技怎么样 崇明区互联网教育科技诚信经营 天津腾达互联网科技有限公司 为客找房互联网科技公司怎么样 每天都有哪些好的互联网科技 伍佰万互联网科技怎么赚钱 互联网企业科技类企业如何做账 江苏互联网科技小贷 萌小萌互联网科技河南有限公司 江苏互联网智能科技产品出厂价 互联网科技对化妆品行业 盐城市攀科互联网科技有限公司 互联网领先科技成果宣传视频 互联网科技自媒体灵感 互联网科技网 互联网科技工作委员会 互联网科技社 中资互联网科技 与互联网科技公司 互联网科技公司电话 世界互联网领先科技成果 互联网科技产业特征 宜昌元轩互联网科技有限公司 互联网科技职业技能培训学校
0