MySQL8中创建函数报错的解决
一 问题描述
在使用MySQL8.x版本的数据库创建函数时, 报出一下错误
HY000][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
简单翻译一下 , 函数定义不明确 , 没有SQl语句 , 或者只是读取数据不会执行 , 并且已经启用了二进制文件记录, 你可能需要使用不太安全的 log_bin_trust_function_creators
变量;
说人话 : MySQL5.x 中 可以直接创建函数 , 在MySQL8.x 中, 不能直接创建函数 , 需要首先设置 log_bin_trust_function_creators=true
, 才可以;
二 解决方案
方案一 : 设置全局环境变量
特点 : 不需要重启服务器, 在服务器的一次运行中始终有效 , 重启MySQL服务之后会失效!
show variables like '%log_bin_trust_function_creators%'; # 查看默认值
set GLOBAL log_bin_trust_function_creators=TRUE; # 修改默认值为true
方案二 : 修改系统配置文件
特点 : 需要重启服务器, 终身有效 !
找到my.cnf
配置文件中添加:
log_bin_trust_function_creators=1
修改完成以后, 记得重启一下服务哦 ! 如果不想重启服务 , 也可以将方案一二结合使用 , 即修改全局环境变量 , 又修改系统配置文件 !