При попытке создать пользовательскую функцию в MySQL 8.0 возникает ошибка 1418. На сервере MySQL 5.6 создается без проблем. Почему?
Текст ошибки: ERROR: Error 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)
Изначально у меня не было прописаны характеристики. Но после этой ошибки я прописал NOT DETERMINISTIC, так моя функция не является детерминированной. А еще она написана на SQL (значение по умолчанию) и не является READS SQL DATA, так как она пишет или изменяет записи. Так вот, я прописал NOT DETERMINISTIC и ничего не изменилось... Как мне побороть эту ошибку?
Для правильного вопроса надо знать половину ответа
Собственно, ответ на ваш вопрос заключён в тексте ошибки.
Вы используете бинарные логи, которые содержат только последовательность выполняемых запросов. Поскольку ваша функция не детерминирована, она при каждом следующем вызове из одного и того же состояния может вернуть разные значения, соответственно MySQL не может гарантировать точную репликацию и/или восстановление данных из бинарного лога. https://dev.mysql.com/doc/refman/5.7/en/stored-pro...
Иван Мельников, Если оно вам не нужно, то да. Или переписать функцию, сделав её детерминированной. Или установить переменную log_bin_trust_function_creators в 1, приняв всю ответственность за некорректную репликацию на себя.