ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQ L DATA in its decla

原创 2016年08月30日 13:39:18
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配置了复制,复制功能也就意味着Master数据的变化,会同步到Slave。对于函数,Mysql要求函数不能修改数据。
解决办法:
1、创建函数的时候,明确说明我不会修改数据。创建函数的时候有5个选项:
a、DETERMINISTIC 确定性的
b、NO SQL 没有包含SQl语句,当然也不会修改数据
c、READS SQL DATA 只是读取数据,当然也不会修改数据
d、MODIFIES SQL DATA 要修改数据
e、CONTAINS SQL 包含了SQL语句
怎么理解DETERMINISTIC确定性的?
可以认为输入相同,方法执行过程,输出也是相同的。也就是方法的可重入性。不可重入的方法:方法内使用了静态的数据,使用了malloc和free,使用了标准I/O函数。
创建函数必须明确指出a、b、c三个选项中的一个,才能执行成功。如下:
mysql> show variables like 'log_bin%';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| log_bin                         | ON    |
| log_bin_trust_function_creators | OFF   |
| log_bin_trust_routine_creators  | OFF   |
+---------------------------------+-------+
3 rows in set
mysql> create function fun1 (num int(9)) returns int(9)
begin
return 1;
end;
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)
mysql> create function fun1 (num int(9)) returns int(9) reads sql data
begin
return 1;
end;
Query OK, 0 rows affected
mysql> drop function fun1;
Query OK, 0 rows affected
mysql> create function fun1 (num int(9)) returns int(9) deterministic
begin
return 1;
end;
Query OK, 0 rows affected
2、告诉Mysql,信任我,方法不会修改数据,Mysql不再检查,即使修改了数据。这个时候要靠你信守承诺,否则后果自负。
mysql> drop function fun1;
Query OK, 0 rows affected
mysql> set global log_bin_trust_function_creators=on;
Query OK, 0 rows affected
mysql> show variables like 'log_bin%';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| log_bin                         | ON    |
| log_bin_trust_function_creators | ON    |
| log_bin_trust_routine_creators  | ON    |
+---------------------------------+-------+
3 rows in set
mysql> create function fun1 (num int(9)) returns int(9) modifies sql data
begin
return 1;
end;
Query OK, 0 rows affected
版权声明:本文为博主原创文章,未经博主允许不得转载。

Mysql自定义函数报错解决方法

1、在MySql中创建自定义函数报错信息如下: ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or REA...
  • CiWei007
  • CiWei007
  • 2013年11月12日 20:32
  • 6616

MySQL 存储过程和函数

概述   一提到存储过程可能就会引出另一个话题就是存储过程的优缺点,这里也不做讨论,一般别人问我我就这样回答你觉得它好你就用它。因为mysql中存储过程和函数的语法非常接近所以就放在一起,主要区别就...
  • cmh200704
  • cmh200704
  • 2016年03月17日 09:36
  • 224

opencv计算机视觉学习笔记五

第六章 图像检索以及基于图像描述符的搜索 通过提取特征进行图像的匹配与搜索   1 特征检测算法 常见的特征和提取算法: Harris 检测角点 Sift 检测斑点(blob) 有专利保护...
  • retacn_yue
  • retacn_yue
  • 2016年12月13日 12:48
  • 849

细细探究MySQL Group Replicaiton — 配置维护故障处理全集

http://www.cnblogs.com/xinysu/p/6674832.html 阅读目录(Content) 1 What's Group Replic...
  • zdy0_2004
  • zdy0_2004
  • 2017年04月07日 16:39
  • 1049

GIC ITS 学习笔记(一)

GIC ITS NOTE 1
  • scarecrow_byr
  • scarecrow_byr
  • 2015年10月19日 22:57
  • 914

mysql5.6新功能transportable tablespaces(可传输表空间)进行远程备份数据库

MySQL5.6支持transportable tablespaces(可传输表空间)、允许单表空间(每个表的.ibd文件)动态导入导出 innodb导出物理导入导出备份 新建一个一样的表结构(数...
  • xiaoyi23000
  • xiaoyi23000
  • 2016年11月13日 19:25
  • 364

【OpenCV】SIFT原理与源码分析

原文:http://blog.csdn.net/xiaowei_cqu/article/details/8069548 SIFT简介 Scale Invariant Feature Tra...
  • zhazhiqiang2010
  • zhazhiqiang2010
  • 2014年02月25日 13:53
  • 1667

利用xtrabackup和binlog增量恢复时提示表记录不存在案例

一.基本信息 版本:10.0.20-MariaDB-log 数据文件和redo log位置:/apps/dbdat/mariadb10_data3306/ bing log位置:/apps/dbdat...
  • zengxuewen2045
  • zengxuewen2045
  • 2016年05月19日 15:37
  • 1410

uLua中遇到的问题

C#调用lua函数:定义的传参问题 C#调用Lua父类函数不行问题 Lua中调用不到C#对象的父类函数 Lua中调用不到C#重载函数 Lua中报错 function at line xxx has ...
  • dingkun520wy
  • dingkun520wy
  • 2015年12月14日 21:46
  • 1490

mysql从.frm和.ibd文件恢复数据库

下载 MySQL Utilities http://dev.mysql.com/downloads/utilities/ 需要安装https://www.microsoft.com/...
  • zahuopuboss
  • zahuopuboss
  • 2016年03月21日 11:19
  • 3637
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQ L DATA in its decla
举报原因:
原因补充:

(最多只允许输入30个字)