При импорте базы данных MySQL вы можете столкнуться с ошибкой «1418 (HY000) в строке 10185: в объявлении этой функции нет ни одного из значений DETERMINISTIC, NO SQL или REDS SQL DATA, и двоичное ведение журнала включено (вы возможно захотите использовать менее безопасную переменную log_bin_trust_function_creators)». Эта ошибка возникает, если вы не указали детерминированный характер функции в базе данных.
Чтобы устранить эту ошибку, вы можете использовать один из двух методов:
Метод 1: временно Отключить двоичное ведение журнала
SET GLOBAL log_bin_trust_function_creators = 1;
Метод 2. Настройка файла mysql.ini
log_bin_trust_function_creators = 1;
Установив это значение равным 1, вы ослабляете проверка недетерминированных функций. Эту опцию следует использовать с осторожностью, поскольку она потенциально может поставить под угрозу целостность ваших данных.
Понимание детерминированных функций
Чтобы избежать этой ошибки в будущем, используйте лучший подход заключается в использовании детерминированных объявлений для хранимых функций. Эти объявления сообщают MySQL, всегда ли функция дает одинаковый результат для одних и тех же входных параметров. Вот различные детерминированные объявления:
DETERMINISTIC:
НЕТ ДЕТЕРМИНИСТИЧЕСКИЕ:
ЧИТАЕТ ДАННЫЕ SQL:
НЕТ SQL:
СОДЕРЖИТ SQL:
Выбор правильное объявление
Выбор правильного объявления для функции зависит от ее поведения. Если выходные данные функции зависят от факторов, внешних по отношению к базе данных, таких как текущее время или генератор случайных чисел, ее следует объявить как НЕ ДЕТЕРМИНИРОВАННУЮ. Если функция только считывает данные, ее можно объявить как READS SQL DATA. Если функция не содержит операторов SQL, ее можно объявить как NO SQL.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3