错误信息
[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)
[错误] 1418这个函数没有确定性,没有SQL,或读取其声明和二进制日志的SQL数据启用(你可能想使用不安全的log_bin_trust_function_creators变量)
问题解析
这事因为我们开启了log_bin_trust_function_creators,在function里面,只有 DETERMINISTIC, NO SQL 和 READS SQL DATA 被支持。如果我们开启了 log_bin, 我们就必须为我们的function指定一个参数。
mysql> show variables like'%func%';+---------------------------------+-------+| Variable_name | Value |+---------------------------------+-------+| log_bin_trust_function_creators | OFF |+---------------------------------+-------+1 row in set
解决方法
在MySQL中创建函数时出现这种错误的解决方法有两种选择任意一种即可:
- set global log_bin_trust_function_creators=TRUE;
- set global log_bin_trust_function_creators=1;
mysql> set GLOBAL log_bin_trust_function_creators= 1;Query OK, 0 rows affectedmysql> show variables like'%func%';+---------------------------------+-------+| Variable_name | Value |+---------------------------------+-------+| log_bin_trust_function_creators | ON |+---------------------------------+-------+1 row in set