版本: 5.8
错误信息:
This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its de 错误解决办法
添加Function如下:
DROP FUNCTION IF EXISTS `shop_ajiababy_com`.`countDistance`;
DELIMITER ;;
CREATE DEFINER=`rojers`@`%` FUNCTION `shop_ajiababy_com`.`countDistance`(`StartLon` double,`StartLat` double,`EndLon` double,`EndLat` double) RETURNS int(10)
BEGIN
DECLARE PointDistance INT(10);
SELECT ROUND(6378 * acos (
cos ( radians( StartLat ) )
* cos( radians( EndLat ) )
* cos( radians( EndLon ) - radians( StartLon ) )
+ sin ( radians( StartLat ) )
* sin( radians( EndLat ) )
) * 1000) INTO PointDistance;
RETURN PointDistance;
END
;;
DELIMITER ;
解决:
开启了bin-log, 就必须指定函数是否是
- DETERMINISTIC 确定性的
- NO SQL 没有SQl语句,当然也不会修改数据
- READS SQL DATA 只是读取数据,当然也不会修改数据
- MODIFIES SQL DATA 要修改数据
- CONTAINS SQL 包含了SQL语句
其中在function里面,只有 DETERMINISTIC, NO SQL 和 READS SQL DATA 被支持。
如果开启了 bin-log, 就必须为我们的function指定一个参数
方案:
在MySQL中创建函数时出现这种错误的解决方法:
set global log_bin_trust_function_creators=TRUE;