MYSQL 创建函数出错的解决方案

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:   在使用MySQL数据库时,有时会遇到MySQL函数不能创建的情况。下面就教您一个解决MySQL函数不能创建问题的方法,供您借鉴参考

本文转自IT摆渡网欢迎转载,请标明出处
摆渡网

更多mysq文章请阅读

mysql问题错误修改

  在使用MySQL数据库时,有时会遇到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 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正常运行,问题解决。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
关系型数据库 MySQL 索引
936. 【mysql】locate函数
936. 【mysql】locate函数
22 2
|
1月前
|
SQL 关系型数据库 MySQL
927. 【mysql】coalesce 函数
927. 【mysql】coalesce 函数
23 3
|
1月前
|
关系型数据库 MySQL
926.【mysql】 date 函数
926.【mysql】 date 函数
67 3
|
1月前
|
关系型数据库 MySQL
925. 【mysql】convert 函数
925. 【mysql】convert 函数
23 3
|
1月前
|
SQL 关系型数据库 MySQL
解决MySQL主从慢同步问题的常见的解决方案:
解决MySQL主从慢同步问题的方法有很多,以下是一些常见的解决方案: 1. 检查网络连接:确保主从服务器之间的网络连接稳定,避免网络延迟或丢包导致数据同步缓慢。 2. 优化数据库配置:调整MySQL的配置参数,如增大binlog文件大小、调整innodb_flush_log_at_trx_commit等参数,以提高主从同步性能。 3. 检查IO线程和SQL线程状态:通过SHOW SLAVE STATUS命令检查IO线程和SQL线程的状态,确保它们正常运行并没有出现错误。 4. 检查主从日志位置:确认主从服务器的binlog文件和位置是否正确,避免由于错误的日志位置导致同步延迟。 5.
122 1
|
2月前
|
关系型数据库 MySQL 索引
mysql常见函数
mysql常见函数
|
1月前
|
SQL 关系型数据库 MySQL
【MySQL 数据库】2、MySQL 的数据控制语言、函数和约束
【MySQL 数据库】2、MySQL 的数据控制语言、函数和约束
31 0
|
1月前
|
关系型数据库 MySQL 数据库
深入探讨MySQL并发事务的问题及解决方案
深入探讨MySQL并发事务的问题及解决方案
74 0
|
2月前
|
存储 SQL 关系型数据库
MySQL技能完整学习列表7、存储过程和函数——1、存储过程(Stored Procedures)的创建和执行——2、函数(Functions)的创建和使用
MySQL技能完整学习列表7、存储过程和函数——1、存储过程(Stored Procedures)的创建和执行——2、函数(Functions)的创建和使用
35 0
|
10天前
|
SQL 关系型数据库 MySQL
DQL语言之常见函数(mysql)
DQL语言之常见函数(mysql)