Я использую Mysql 5.7 с binary-logging
, активированным с помощью mixed-mode
.Я хочу определить функцию, которая не является детерминированной.Из руководства я понял, что глобальная переменная log_bin_trust_function_creators
должна быть установлена только для binlog_format=STATEMENT
, чтобы переопределить проверки:
При попытке выполнить сохраненную функцию, если задано binlog_format = STATEMENT, в определении функции должно быть указано ключевое слово DETERMINISTIC.Если это не так, генерируется ошибка, и функция не запускается, если только log_bin_trust_function_creators = 1 не указано для отмены этой проверки.
Чтобы ослабить предыдущие условия при создании функции (что у вас должна быть привилегия SUPER и что функция должна быть объявлена детерминированной или не изменять данные), задайте для глобальной системной переменной log_bin_trust_function_creators значение 1
Почему этого не происходитдостаточно, чтобы явно пометить мою функцию как NOT DETERMINISTIC
, чтобы MySQL пометил ее как unsafe
и, следовательно, использует репликацию на основе строк вместо операторов?