解决mysql报错This function has none of DETERMINISTIC问题
解决mysql报错ThisfunctionhasnoneofDETERMINISTIC问题
在使用mysql的过程中,可能会遇到报错ThisfunctionhasnoneofDETERMINISTIC问题,具体表现为在创建存储过程时会出现以下的错误信息:ERROR1418(HY000):ThisfunctionhasnoneofDETERMINISTIC,NOSQL,orREADSSQLDATAinitsdeclarationandbinaryloggingisenabled(you*might*wanttousethelesssafelog_bin_trust_function_creatorsvariable)。该问题的出现主要是因为我们开启了bin-log,而函数没有设置DETERMINISTIC、NOSQL或READSSQLDATA参数信息。
本文将向大家介绍解决该问题的方法:
一、前置知识
在解决该问题之前,需要了解几个概念:
1. DETERMINISTIC:表示函数具有确定性,即输入相同的参数得到的结果也相同,不涉及服务器状态,不会因为改变参数或者任何其他环境而对返回结果造成影响。
2. NOSQL:表示函数不使用SQL语句。
3. READSSQLDATA:表示函数只读取数据,不修改数据。
二、解决方法
1. 查看log_bin_trust_function_creators参数值
首先需要查看log_bin_trust_function_creators参数值,该参数表示是否信任非确定性函数创建者。可以使用以下命令查看该参数的值:
mysql> show variables like 'log_bin_trust_function_creators';
+---------------------------------+-------+
|Variable_name|Value|
+---------------------------------+-------+
|log_bin_trust_function_creators|OFF|
+---------------------------------+-------+
2. 设置log_bin_trust_function_creators参数值
根据报错提示,需要设置log_bin_trust_function_creators参数值为1。可以使用以下命令设置该参数值:
mysql> set global log_bin_trust_function_creators=1;
mysql> show variables like 'log_bin_trust_function_creators';
+---------------------------------+-------+
|Variable_name|Value|
+---------------------------------+-------+
|log_bin_trust_function_creators|ON|
设置成功后,再次执行创建存储过程的命令即可。
需要注意的是,上述设置只是临时的,如果mysqld重启,该参数值又会恢复为默认值,因此建议在my.cnf配置文件中添加log_bin_trust_function_creators=1来永久修改该参数值。
三、结语
本文向大家介绍了解决mysql报错ThisfunctionhasnoneofDETERMINISTIC问题的方法,希望可以帮助到大家。如果您还有其他问题,可以在php中文网进行搜索或请教其它程序员。

-
MySQL Workbench怎么建立数据库(附:sql语句创建数据库方法) 2023-07-20 12:22:29
-
MySQL Workbench是什么?(附:如何设置中文教程) 2023-07-20 11:42:31
-
qt5.8如何连接mysql 2023-05-14 07:00:03
-
mysql怎么将查询结果赋给变量 2023-05-14 07:00:03
-
mysql乐观锁和悲观锁的区别是什么 2023-05-14 07:00:03
-
一起聊聊MySQL主从延时的处理方案 2023-05-14 07:00:03
-
mysql修改表结构的语句是什么 2023-05-14 07:00:03
-
MySQL 语法整理介绍 2023-05-14 07:00:03
-
mysql驱动是什么 2023-05-14 07:00:03
-
mysql怎样查询日期范围 2023-05-14 07:00:02