«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как решить проблему «1418 (HY000). Эта функция не имеет ни одного из ДЕТЕРМИНИРОВАННЫХ, НЕТ SQL или ЧИТАЕТ ДАННЫЕ SQL в своем объявлении, и двоичное ведение журнала включено» Ошибка в MySQL?

Как решить проблему «1418 (HY000). Эта функция не имеет ни одного из ДЕТЕРМИНИРОВАННЫХ, НЕТ SQL или ЧИТАЕТ ДАННЫЕ SQL в своем объявлении, и двоичное ведение журнала включено» Ошибка в MySQL?

Опубликовано 16 ноября 2024 г.
Просматривать:935

How to Solve the \

При импорте базы данных 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:

  • Функции, которые всегда дают один и тот же результат для одних и тех же входных параметров.

НЕТ ДЕТЕРМИНИСТИЧЕСКИЕ:

  • Функции, которые не всегда дают одинаковый результат для одних и тех же входных параметров. Если это не указано явно, MySQL по умолчанию имеет значение NOT DETERMINISTIC.

ЧИТАЕТ ДАННЫЕ SQL:

  • Функции, которые только читают данные из баз данных.

НЕТ SQL:

  • Функции, которые не содержат операторов SQL.

СОДЕРЖИТ SQL:

  • Функции, которые содержат инструкции SQL, но не читают и не записывают данные.

Выбор правильное объявление

Выбор правильного объявления для функции зависит от ее поведения. Если выходные данные функции зависят от факторов, внешних по отношению к базе данных, таких как текущее время или генератор случайных чисел, ее следует объявить как НЕ ДЕТЕРМИНИРОВАННУЮ. Если функция только считывает данные, ее можно объявить как READS SQL DATA. Если функция не содержит операторов SQL, ее можно объявить как NO SQL.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3