Ошибка MySQL: 1418 This function has none of DETERMINISTIC
Сегодня рассмотрим одну из популярных ошибок в MySQL. Сообщение об ошибке:
#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)
Обычно данная ошибка связана с тем, что функция является недетерминированной. Более подробную информацию можно узнать из статьи Детерминированные и недетерминированные функции.
Решить указанную ошибку можно двумя способами.
1. Отключить глобальную настройку log_bin_trust_function_creators
SET GLOBAL log_bin_trust_function_creators = 1;
2. Добавить строки между «RETURNS [TYPE OF DATA]» и «BEGIN».
LANGUAGE SQL DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER
Например:
CREATE FUNCTION test() RETURNS INT LANGUAGE SQL DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER BEGIN RETURN 1; END
Спасибо и до новых встреч.