Ошибка 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

Спасибо и до новых встреч.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Добавить комментарий

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: