测试所用mysql版本:5.7.28

当我创建的mysql函数过程中,业务逻辑肯定存在sql时,执行函数写完了,

CREATE DEFINER = `root`@`1.14.30.49` FUNCTION `NewProc`() RETURNS int(11)
BEGIN-- =============================================-- Author: water-- Create date: <20190310>-- Description: 图片比对记录表关联查询数据迁移到总表-- Modify [n]: < 20190310 >-- =============================================#函数执行内容DECLARE executeTotal INTEGER(10); #执行条数DECLARE oldTotal INTEGER(10); #执行前条数DECLARE newTotal INTEGER(10); #执行后条数SELECT COUNT(id) INTO executeTotal FROM picture_comparison WHERE create_time < data_before;SELECT COUNT(id) INTO oldTotal FROM picture_comparison_sum;#1、批量插入结果集INSERT INTO picture_comparison_sum (id,student_name, student_id, tel, college_name, major_name, training_name, video_name, picture_type, registr_image_url, capture_image_url, comparison_result,confidence, create_time) SELECT p.id, s.studentName, s.studentId, s.tel, c.collegeName, m. NAME AS majorName, t.trainingName, v.videoName, p.type as picture_type, p.registr_image_url, p.capture_image_url, p.is_success as comparison_result, p.confidence, DATE_FORMAT( p.create_time, '%Y-%m-%d %H:%i:%s' ) AS create_timeFROM picture_comparison p LEFT JOIN student s ON p.user_id = s.studentId LEFT JOIN college_management c ON s.institute = c.id LEFT JOIN major m ON s.major = m.id LEFT JOIN training_class t ON s.clazz = t.id LEFT JOIN video v ON v.videoId = p.videoId WHERE p.create_time < data_before ORDER BY p.create_time;SELECT COUNT(id) INTO newTotal FROM picture_comparison_sum;#2、批量删除表数据IF executeTotal = newTotal - oldTotal THENDELETE FROM picture_comparison WHERE create_time < data_before;END IF;RETURN executeTotal;
END;

这时遇到了第一个错误:1418错误,mysql开启了bin-log, 我们就必须指定我们的函数是否是哪种类型(两种方法:【1、关闭bin-log;2、指定函数类型】)可以参考:MySQL 错误1418 的原因分析及解决方法

之后创建发现1419错误,(可能是当前用户没有创建函数的权限吧)可以参考:MySQL创建触发器的时候报1419错误( 1419 - You do not have the SUPER privilege and binary logging is enabled ),

当然我这里采用了另一种解决方法,直接使用了root账户创建了函数,创建后root可以看到函数内容,普通用户看不到,原因是函数的定义者需要修改:可以参考:记一次mysql神奇现象--root可以看到函数内容,普通用户看不到?

最终结果:

CREATE DEFINER = `sjt_user1`@`%` FUNCTION `NewProc`()RETURNS int(11)DETERMINISTIC
BEGIN-- =============================================-- Author: water-- Create date: <20190310>-- Description: 图片比对记录表关联查询数据迁移到总表-- Modify [n]: < 20190310 >-- =============================================#函数执行内容DECLARE executeTotal INTEGER(10); #执行条数DECLARE oldTotal INTEGER(10); #执行前条数DECLARE newTotal INTEGER(10); #执行后条数SELECT COUNT(id) INTO executeTotal FROM picture_comparison WHERE create_time < data_before;SELECT COUNT(id) INTO oldTotal FROM picture_comparison_sum;#1、批量插入结果集INSERT INTO picture_comparison_sum (id,student_name, student_id, tel, college_name, major_name, training_name, video_name, picture_type, registr_image_url, capture_image_url, comparison_result,confidence, create_time) SELECT p.id, s.studentName, s.studentId, s.tel, c.collegeName, m. NAME AS majorName, t.trainingName, v.videoName, p.type as picture_type, p.registr_image_url, p.capture_image_url, p.is_success as comparison_result, p.confidence, DATE_FORMAT( p.create_time, '%Y-%m-%d %H:%i:%s' ) AS create_timeFROM picture_comparison p LEFT JOIN student s ON p.user_id = s.studentId LEFT JOIN college_management c ON s.institute = c.id LEFT JOIN major m ON s.major = m.id LEFT JOIN training_class t ON s.clazz = t.id LEFT JOIN video v ON v.videoId = p.videoId WHERE p.create_time < data_before ORDER BY p.create_time;SELECT COUNT(id) INTO newTotal FROM picture_comparison_sum;#2、批量删除表数据IF executeTotal = newTotal - oldTotal THENDELETE FROM picture_comparison WHERE create_time < data_before;END IF;RETURN executeTotal;
END;

编写时所引用和借鉴的url

MySQL 错误1418 的原因分析及解决方法

MySQL创建触发器的时候报1419错误( 1419 - You do not have the SUPER privilege and binary logging is enabled )

记一次mysql神奇现象--root可以看到函数内容,普通用户看不到?

mysql 创建执行函数(1418,1419错误,root可以看到函数内容,普通用户看不到,问题解决)相关推荐

  1. 创建的函数带有编译错误。_AST实现函数错误的自动上报(原理到实践)

    来源:哈啰出行-杭州团队 (作者授权转载) https://segmentfault.com/a/1190000037630766 前言 之前有身边有人问我在错误监控中,如何能实现自动为函数自动添加错 ...

  2. flask返回json数据到前端_小白学Flask第六天| abort函数、自定义错误方法、视图函数的返回值...

    点击蓝色字关注我们! 一个正在努力变强的公众号 本文内容: 1. abort函数的使用 2. 自定义错误处理方法 3. 设置响应信息的方法 4. 返回json数据的方法 abort函数的使用 abor ...

  3. mysql创建视图字符集1267_MYSQL字符集错误:ERROR1267(HY000):Illegalmixof...解决_MySQL

    bitsCN.com MYSQL字符集错误:ERROR 1267 (HY000): Illegal mix of...解决 老生常谈,MYSQL 字符集问题: 1.mysql字符集 mysql字段.表 ...

  4. mysql创建数据库1064_Mysql创建表过程中报1064错误

    Mysql创建表过程中报1064错误 发布时间:2020-06-18 06:23:08 来源:51CTO 阅读:7528 作者:白羊IT 我在自己搭建的mysql服务中,在使用create table ...

  5. mysql创建库几种方法_MySQL创建数据库的两种方法

    本文为大家分享了两种mysql创建数据库的方法,供大家参考,具体内容如下 第一种方法:使用 mysqladmin 创建数据库使用普通用户,你可能需要特定的权限来创建或者删除 mysql 数据库. 所以 ...

  6. mysql无法执行二进制文件_kail系统64,mysql64,出现-bash: bin/mysqld: 无法执行二进制文...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Linux localhost 3.10.72+ #1 SMP PREEMPT Thu Jun 16 13:34:40 CST 2016 aarch64 ...

  7. MySQL创建函数报“ERROR 1418 ”错误,不能创建函数

    MySQL创建函数报ERROR 1418错误,不能创建函数,根据官方提示是说,不能创建函数可能是一个安全设置方面的配置或功能未开启原因,下面我们一起来看. 错误 ERROR 1418 (HY000): ...

  8. mysql创建函数1418_Mysql中创建函数报“ERROR 1418 ”的解决方法

    我们在使用mysql数据库开发项目的时候,有时Mysql系统自带的函数不能完全满足我们开发的需要,解决方法是自己创建函数,可以有可能在你创建函数的过程事会报出Error 1418错误,对于报这种错误的 ...

  9. mysql创建函数执行sql语句_MySQL mysql_query 函数执行SQL语句

    mysql_query()函数 PHP MySQL 函数库中,mysql_query() 函数用于向 MySQL 发送并执行 SQL 语句. 对于没有数据返回结果集的 SQL ,如 UPDATE.DE ...

  10. mysql 触发器采坑记录(mysql 触发器采坑记录 由于不了解mysql创建触发器要记录创建者IP,导致更改创建者IP后,触发器不可执行。 当创建触发器(视图、存储过程、函数)时,如果没有)

    mysql 触发器采坑记录(语序有点凌乱,回头再整理) 由于不了解mysql创建触发器要记录创建者IP,导致更改创建者IP后,触发器不可执行. 当创建触发器(视图.存储过程.函数)时,如果没有指定创建 ...

最新文章

  1. Oralce Plsql 中文显示乱码问题无需修改注册表完美解决
  2. R语言对数线性模型loglm函数_使用R语言进行混合线性模型(mixed linear model) 分析代码及详解...
  3. 二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
  4. [渝粤教育] 中国地质大学 自动控制原理 复习题 (2)
  5. oracle表空间不足
  6. linux定时器跑命令,linux下运行定时器(cron/centos/js脚本)
  7. python主要简介_Python的简介
  8. 面向对象程序设计c 语言描述 答案,c面向对象程序设计习题解答全.doc
  9. 无盘服务器pnp,锐起无盘PNP有哪些配置类型
  10. autosub字幕自动识别生成-最新windows配置方法
  11. java支持xls格式的excel导入和导出
  12. java+ElementUI前后端分离旅游项目第二天 旅游管理和自由行
  13. Python 爬虫 + 人脸检测 —— 知乎高颜值图片抓取
  14. 酷睿i7 11700什么水平 i711700怎么样 i7 11700属于高端吗
  15. tf.estimator.train_and_evaluate 详解
  16. 你会算对象的大小么?不会的话就看看这篇文章吧
  17. IIS 7.5 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。
  18. C++ Qt高仿QQ影音视频播放器 (一)
  19. 2011计算机2级,2011年度计算机等级考试二级VFP基础教程(41)
  20. 北京超声刀治疗痘印有效吗

热门文章

  1. kettle使用命令行来运行ktr和kjb
  2. zabbix监控的快速部署
  3. A callback was made on a garbage collected delegate of type...
  4. 有限元方法之三角形元任意阶的Lagrange型形状函数
  5. android mac地址不可用,Android手机里的mac地址显示不可用是为什么。我的手机是海信E920....
  6. python解超越方程_初试在Python中使用PARI/GP
  7. vue前后端分离图片无法显示的问题
  8. 微软远程桌面mac/ios/android客户端
  9. SqlServer 2008出现远程过程调用失败,错误代码[Ox800706be]
  10. 0002计算机组成原理与体系结构02