当前位置: 首页 > news >正文

mysql编程--创建函数出错的解决方案

本文章转载自:http://www.jb51.net/article/71100.htm

在使用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 | OFF   | 
+---------------------------------+-------+ 
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正常运行,问题解决。

 

转载于:https://www.cnblogs.com/tangwanzun/p/6072770.html

相关文章:

  • 什么场景应该用 MongoDB ?
  • NFS的常用挂载参数
  • Ubuntu 14.04 网卡逻辑名修改
  • dos.orm的事务处理
  • log4j2基本操作
  • docker-gitlab
  • 让mysqldump变成并发导出导入的魔法
  • kafka术语
  • 《深入 React 技术栈》
  • 聊聊 Redis 使用场景
  • 四: 基本标签
  • 离线安装 Python 2.7, paramiko 和 tornado
  • 线程组
  • Android图表库MPAndroidChart(十一)——多层级的堆叠条形图
  • Odoo 二次开发教程(五)-新API的介绍与应用
  • SegmentFault for Android 3.0 发布
  • Brief introduction of how to 'Call, Apply and Bind'
  • CentOS6 编译安装 redis-3.2.3
  • Centos6.8 使用rpm安装mysql5.7
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • ECMAScript入门(七)--Module语法
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • Java小白进阶笔记(3)-初级面向对象
  • Laravel核心解读--Facades
  • Redis学习笔记 - pipline(流水线、管道)
  • SpingCloudBus整合RabbitMQ
  • TypeScript迭代器
  • V4L2视频输入框架概述
  • Vue UI框架库开发介绍
  • 闭包,sync使用细节
  • 机器学习学习笔记一
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 使用agvtool更改app version/build
  • 算法系列——算法入门之递归分而治之思想的实现
  • 算法之不定期更新(一)(2018-04-12)
  • 通过调用文摘列表API获取文摘
  • # Java NIO(一)FileChannel
  • #大学#套接字
  • #单片机(TB6600驱动42步进电机)
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (solr系列:一)使用tomcat部署solr服务
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (五)网络优化与超参数选择--九五小庞
  • (学习日记)2024.02.29:UCOSIII第二节
  • (转)fock函数详解
  • (转)visual stdio 书签功能介绍
  • (转)创业家杂志:UCWEB天使第一步
  • .net 调用php,php 调用.net com组件 --
  • .net快速开发框架源码分享
  • //解决validator验证插件多个name相同只验证第一的问题