上机环境 mysql8.0 navicat for mysql
很有那么一批软件程序,要不做点脱了裤子放屁的事儿就觉得自己不够二进制似的,今儿写了一下午mysql函数,怎么都通过不了,上网一看
mysql要想写点函数,先要打开几个参数如下:
- 开启允许创建函数的参数(援引自https://blog.csdn.net/weixin_34226706/article/details/86019015)
解决办法1: 执行: SET GLOBAL log_bin_trust_function_creators = 1; 不过 重启了 就失效了 注意: 有主从复制的时候 从机必须要设置 不然会导致主从同步失败 解决办法2: 在my.cnf里面设置 log-bin-trust-function-creators=1 不过这个需要重启服务
set global log_bin_trust_function_creators=TRUE;
上面这个设置设置为true我们才能让函数返回任意类型的结果,否则会报
This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary
而我仅仅是写了这样一段函数,用于测试在navicat中能否执行通过!
DELIMITER $$ DROP FUNCTION IF EXISTS genPerson$$ CREATE FUNCTION genPerson(name varchar(20)) RETURNS INT BEGIN DECLARE str VARCHAR(50) DEFAULT ''; DECLARE asshole int; SET asshole=(select MAX(id) from member_info_v); return asshole; END $$ DELIMITER ;
注意:一定要带delimiter 还有空两格加上那对可笑的$$
还有 end $$ 和 delimiter空格;否则一定报错!
我真想问问mysql开发组那帮哥们,你们喝汤的时候 标记哪滴汤可以入口。哪滴汤标记为true 才能入口吗