mysql创建自定义函数出错解决方法

1、在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)

解决方法:

mysql>set global log_bin_trust_function_creators=1;

源文档 http://blog.csdn.net/zzs0829/article/details/3933326

2、创建function时

出错信息:

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)

原因:

这是我们开启了bin-log, 我们就必须指定我们的函数是否是

1 DETERMINISTIC 不确定的

2 NO SQL 没有SQl语句,当然也不会修改数据

3 READS SQL DATA 只是读取数据,当然也不会修改数据

4 MODIFIES SQL DATA 要修改数据

5 CONTAINS SQL 包含了SQL语句

其中在function里面,只有 DETERMINISTIC, NO SQL 和 READS SQL DATA 被支持。如果我们开启了 bin-log, 我们就必须为我们的function指定一个参数。

在MySQL中创建函数时出现这种错误的解决方法:

set global log_bin_trust_function_creators=TRUE;

源文档 http://hi.baidu.com/alovn/blog/item/590412157d0c0c04972b43ce.html

3、

向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)

原因:

这是我们开启了bin-log, 我们就必须指定我们的函数是否是

1 DETERMINISTIC 不确定的

2 NO SQL 没有SQl语句,当然也不会修改数据

3 READS SQL DATA 只是读取数据,当然也不会修改数据

4 MODIFIES SQL DATA 要修改数据

5 CONTAINS SQL 包含了SQL语句

其中在function里面,只有 DETERMINISTIC, NO SQL 和 READS SQL DATA 被支持。 如果我们开启了 bin-log, 我们就必须为我们的function指定一个参数。

解决方法:

SQL code

mysql> show variables like '%func%';

+---------------------------------+-------+

| 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 '%func%';

+---------------------------------+-------+

| Variable_name                   | Value |

+---------------------------------+-------+

| log_bin_trust_function_creators | ON    |

+---------------------------------+-------+

1 row in set (0.00 sec)

源文档 http://miaoyue.iteye.com/blog/1270712

4、

今天要写一个函数.但没有办法建提示错误如下:

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)

解决方式:(编缉my.cnf,添加如下)

[mysqld]

log_bin_trust_routine_creators = 1

重启mysql就好了

humen1 Tech

源文档 http://www.humen1.net/?p=75

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL中,你可以创建自定义函数来满足特定的需求。MySQL不仅有着自己定义好的函数,数据库管理员也可以根据需求来定义自己的函数。 要创建自定义函数,你可以使用CREATE FUNCTION语句。它的语法如下: ``` CREATE FUNCTION <函数名>(<参数列表>) RETURNS <返回值类型> [特性...] BEGIN 函数体 END ``` 其中,函数名是你要创建的函数的名称,参数列表是函数的参数,返回值类型是函数的返回值类型。函数体用于编写函数的逻辑代码。 举个例子,假设我们要创建一个函数来计算两个数字的和,可以这样写: ``` CREATE FUNCTION add_numbers(a INT, b INT) RETURNS INT BEGIN DECLARE result INT; SET result = a + b; RETURN result; END ``` 以上代码创建了一个名为add_numbers的函数,它接受两个整数参数a和b,并返回它们的和。函数体中使用DECLARE语句声明了一个变量result,并使用SET语句将计算结果赋给result变量,最后使用RETURN语句返回结果。 创建完成后,你可以使用SELECT语句调用自定义函数,例如: ``` SELECT add_numbers(2, 3); ``` 这将返回5,即两个数字的和。 要注意的是,如果你想删除已经创建自定义函数,可以使用DROP FUNCTION语句。例如: ``` DROP FUNCTION IF EXISTS <函数名>; ``` 其中,函数名是你要删除的函数的名称。 总结来说,你可以使用CREATE FUNCTION语句来创建自定义函数,在函数体中编写你所需的逻辑代码。使用SELECT语句调用自定义函数来获取结果。如果需要删除已经创建自定义函数,可以使用DROP FUNCTION语句。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [MySQL中如何定义一个自己写的函数](https://blog.csdn.net/weixin_45970271/article/details/124212377)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值