zoukankan      html  css  js  c++  java
  • MySQL学习笔记:调用存储过程或函数报1418错误

    问题

      MySQL开启bin-log后,调用存储过程或者函数以及触发器时,会出现错误号为1418的错误:

      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)


    原因

      mysql的设置默认是不允许创建函数。


    解决办法

      第一种:

    在创建子程序(存储过程、函数、触发器)时,声明为DETERMINISTIC或NO SQL与READS SQL DATA中的一个,例如:

    CREATE DEFINER = CURRENT_USER PROCEDURE `NewProc`()
    DETERMINISTIC
    BEGIN
    #Routine body goes here...
    END;;

      第二种:

    信任子程序的创建者,禁止创建、修改子程序时对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;


     

      注意:

    • 采用配置文件方法,需要重启服务;
    • 有主从复制的时候,从机必须要设置 ,不然会导致主从同步失败。

     END 2018-05-22 12:59:23

  • 相关阅读:
    用魔数防范文件上传攻击
    nginx http跳转到https
    tengine安装
    版本标记说明
    nginx基于域名的虚拟主机 反向代理配置实例
    非ROOT用户启动Tomcat
    使用druid连接池的超时回收机制排查连接泄露问题
    Jenkins入门系列之
    centos7 关闭SELINUX 防火墙
    mac安装IE浏览器
  • 原文地址:https://www.cnblogs.com/hider/p/9071529.html
Copyright © 2011-2022 走看看