版本: 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;