具体错误:
 使用mysql创建、调用存储过程,函数以及触发器的时候会有错误符号为1418错误。

[Err] 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)

查阅相关资料,意思是说binlog启用时,创建的函数没有声明类型,因为binlog在主从复制需要知道这个函数创建语句是什么类型,否则同步数据会有不一致现象。

mysql开启了bin-log, 我们就必须指定我们的函数是否是哪种类型: 
1 DETERMINISTIC 不确定的 
2 NO SQL 没有SQl语句,当然也不会修改数据 
3 READS SQL DATA 只是读取数据,当然也不会修改数据 
4 MODIFIES SQL DATA 要修改数据 
5 CONTAINS SQL 包含了SQL语句

为了解决这个问题,MySQL强制要求:
在主服务器上,除非子程序被声明为确定性的或者不更改数据,否则创建或者替换子程序将被拒绝。这意味着当创建一个子程序的时候,必须要么声明它是确定性的,要么它不改变数据。

声明方式有两种:
第一种:声明是否是确定性的
DETERMINISTIC和NOT DETERMINISTIC指出一个子程序是否对给定的输入总是产生同样的结果。
如果没有给定任一特征,默认是NOT DETERMINISTIC,所以必须明确指定DETERMINISTIC来声明一个子程序是确定性的。 
这里要说明的是:使用NOW() 函数(或它的同义)或者RAND() 函数不会使一个子程序变成非确定性的。对NOW()而言,二进制日志包括时间戳并会被正确的执行。RAND()只要在一个子程序内被调用一次也可以被正确的复制。所以,可以认为时间戳和随机数种子是子程序的确定性输入,它们在主服务器和从服务器上是一样的。
第二种:声明是否会改变数据  
CONTAINS SQL, NO SQL, READS SQL DATA, MODIFIES SQL用来指出子程序是读还是写数据的。
无论NO SQL还是READS SQL DATA都指出,子程序没有改变数据,但是必须明确地指定其中一个,因为如果任何指定,默认的指定是CONTAINS SQL。
默认情况下,如果允许CREATE PROCEDURE 或CREATE FUNCTION 语句被接受,就必须明确地指定DETERMINISTIC 或 NO SQL与READS SQL DATA 中的一个,否则就会产生1418错误。

解决办法也有两种:
第一种是在创建子程序(存储过程、函数、触发器)时,声明为DETERMINISTIC或NO SQL与READS SQL DATA中的一个,
例如:

DROP FUNCTION IF EXISTS `t_auto_increment`;
DELIMITER ;;
CREATE FUNCTION `t_auto_increment`(`seq_name` tinyint) RETURNS varchar(50) CHARSET utf8
DETERMINISTIC
BEGIN
declare v_prefix VARCHAR(20);
update t_auto_increment a set a.currentvalue=LAST_INSERT_ID(a.currentvalue+a.incrementBy) where a.autoKey=seq_name;
select prefix into v_prefix from t_auto_increment where autoKey=seq_name;
RETURN CONCAT(CASE WHEN v_prefix  is null THEN '' ELSE  v_prefix END,LAST_INSERT_ID()); 
END
;;
DELIMITER ;

第二种是信任子程序的创建者,禁止创建、修改子程序时对SUPER权限的要求,设置log_bin_trust_routine_creators全局系统变量为1。设置方法有三种:

1.在客户端上执行SET GLOBAL log_bin_trust_function_creators = 1;
2.MySQL启动时,加上--log-bin-trust-function-creators选贤,参数设置为1
3.在MySQL配置文件my.ini或my.cnf中的[mysqld]段上加log-bin-trust-function-creators=1
--------------------- 
作者:lv_hang515888 
来源:CSDN 
原文:https://blog.csdn.net/lv_hang515888/article/details/78094889 
版权声明:本文为博主原创文章,转载请附上博文链接!

MySQL 错误1418 的原因分析及解决方法相关推荐

  1. mysql还原1418错误_MySQL 出现错误1418 的原因分析及解决方法

    MySQL 出现错误1418 的原因分析及解决方法 具体错误: 使用mysql创建.调用存储过程,函数以及触发器的时候会有错误符号为1418错误. ERROR 1418 (HY000): This f ...

  2. MySQL This function has none of DETERMINISTIC, NO SQL...错误1418 的原因分析及解决方法

    原因分析: 因为CREATE PROCEDURE, CREATE FUNCTION, ALTER PROCEDURE,ALTER FUNCTION,CALL, DROP PROCEDURE, DROP ...

  3. 动易2005、2006版常见错误号的原因分析及解决方法

    错 误 号:432 错误描述:File name or class name not found during Automation operation 错误来源:PE_Common6 原因分析:服务 ...

  4. mysql unauthenticated user原因分析以及解决方法

    mysql unauthenticated user原因分析以及解决方法 参考文章: (1)mysql unauthenticated user原因分析以及解决方法 (2)https://www.cn ...

  5. Segmentation fault段错误出现原因分析及解决方法笔记

    Segmentation fault段错误出现原因分析及解决方法 1.局部变量的大小过大,超过栈分配的空间导致段错误,如double a[500][500], 解决方法:大数据不要放在栈区中,可以考虑 ...

  6. 联想服务器系统蓝屏,联想电脑蓝屏并提示“STOP:0X0000007B的原因分析和解决方法...

    ‍ 电脑系统出现蓝屏,是常见的电脑故障之一,通常会提示一个错误代码,蓝屏死机并提示"STOP:0X0000007B"的错误,通常是硬盘的存储控制器驱动加载错误导致的.下面以联想电脑 ...

  7. win10系统装服务器2008蓝屏,升级安装Win10正式版后出现蓝屏怎么办?Win10蓝屏原因分析及解决方法...

    最近有不少人都升级了Win10系统,但是有一些人Win10安装好了以后,总是蓝屏和不停地重启,根本不能好好体验新版Win10了.那么升级安装Win10正式版后出现蓝屏怎么办?下面就分享Win10蓝屏原 ...

  8. dcs world f15c教学_DCS信号干扰原因分析及解决方法,收藏备用!

    原标题:DCS信号干扰原因分析及解决方法,收藏备用! 导 读 随着我国工业的发展,对工业控制系统自动化水平的要求也在不断提高,为了满足自动化控制的要求,DCS系统已经广泛运用于工业自动化控制.因此,D ...

  9. Java遍历List和Map出现ConcurrentModificationException异常原因分析及解决方法

    Java遍历 List 和 Map 出现 ConcurrentModificationException 异常原因分析及解决方法 一.单线程 异常情况举例 只要抛出出现异常,可以肯定的是代码一定有错误 ...

最新文章

  1. 又有六所大学考研预调剂系统已开放!
  2. velocity入门(三) 注释
  3. setcookie无效
  4. php7 configure 参数,PHP编译参数configure配置详解
  5. git21天打卡day21-解决合并冲突
  6. 怎么查找电脑中的流氓软件_玻璃丝网印刷过程中油墨出现问题怎么查找原因解决问题?...
  7. SpringBoot-JPA删除不成功,只执行了查询语句
  8. 二分查找时间复杂度分析
  9. 在VB中使用Linq To SQLite注意事项
  10. 木兰宽松许可证(MulanPSL v2)解析
  11. 【功能更新-1:选项统一】利用python生成自制英语试题程序开发
  12. matlab 超像素合并,超像素区域合并
  13. H5API ---(Web存储-拖拽事件-通信-websocket-geolocation)
  14. 洛谷 P1194 买礼物 题解
  15. 茴字有四种写法,HTAP呢?
  16. C++软件工程师的发展前景如何
  17. WIN10锁屏久了宕机(死机)解决方案
  18. 跑跑飞弹室外跑步AR游戏代码方案设计
  19. 为何晶振并联一个1MΩ电阻?晶振低温不起振如何解决?
  20. 学校计算机学生上机记录表,学生上机登记表.doc

热门文章

  1. nginx-linux安装nginx
  2. 如何用Redis实现分布式锁
  3. 小米8android版本打开,小米上架,提示应用在兼容性测试过程中无法启动,请自行对安卓版本:8.1.0进行测试,成功后请再次提交,我们会再一次进行测试。...
  4. 如何快速掌握涂鸦技能并让涂鸦把工作变得更有趣
  5. brew重新安装python 2.7并设为系统默认python
  6. 实现链表反转的2种方法
  7. 小米mix2安兔兔html5跑分,小米MIX2S综合跑分超越iPhone X,成为全球第一
  8. 《精通引动APP测试实战:技术、工具和案例》---Android 开发环境搭建
  9. 微软正版office 365怎么样
  10. 基于javaweb+mysql的甜品冰淇淋奶茶店网上订餐系统(前台、后台)