"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo resolver el error \"1418 (HY000) Esta función no tiene nada de DETERMINISTA, NO SQL o LECTURA DE DATOS SQL en su declaración y el registro binario está habilitado\" en MySQL?

¿Cómo resolver el error \"1418 (HY000) Esta función no tiene nada de DETERMINISTA, NO SQL o LECTURA DE DATOS SQL en su declaración y el registro binario está habilitado\" en MySQL?

Publicado el 2024-11-16
Navegar:623

How to Solve the \

Al importar una base de datos MySQL, puede encontrar el error "1418 (HY000) en la línea 10185: Esta función no tiene nada de DETERMINISTA, NO SQL o LECTURA DE DATOS SQL en su declaración y El registro binario está habilitado (usted es posible que desee utilizar la variable log_bin_trust_function_creators menos segura)." Este error ocurre cuando no ha especificado la naturaleza determinista de una función dentro de la base de datos.

Para resolver este error, puede usar uno de dos métodos:

Método 1: Temporalmente Deshabilitar el registro binario

SET GLOBAL log_bin_trust_function_creators = 1;

Método 2: Configurar el archivo mysql.ini

log_bin_trust_function_creators = 1;

Al establecer este valor en 1, está relajando la verificación de funciones no deterministas. Esta opción debe usarse con precaución, ya que puede comprometer potencialmente la integridad de sus datos.

Comprensión de las funciones deterministas

Para evitar este error en el futuro, existe un mejor enfoque es utilizar declaraciones deterministas para funciones almacenadas. Estas declaraciones informan a MySQL si la función siempre produce el mismo resultado para los mismos parámetros de entrada. Aquí están las diferentes declaraciones deterministas:

DETERMINISTA:

  • Funciones que siempre producen el mismo resultado para los mismos parámetros de entrada.

NO DETERMINISTA:

  • Funciones que no siempre producen el mismo resultado para los mismos parámetros de entrada. Si no se declara explícitamente, MySQL tiene por defecto NO DETERMINISTA.

LEE DATOS SQL:

  • Funciones que solo leen datos de bases de datos.

NO SQL:

  • Funciones que no contienen sentencias SQL.

CONTIENE SQL:

  • Funciones que contienen instrucciones SQL pero que no leen ni escriben datos.

Elegir la declaración correcta

Seleccionar la declaración correcta La declaración de una función depende de su comportamiento. Si la salida de la función depende de factores externos a la base de datos, como la hora actual o un generador de números aleatorios, debe declararse como NO DETERMINISTA. Si la función solo lee datos, se puede declarar como LECTURA DE DATOS SQL. Si la función no contiene ninguna instrucción SQL, se puede declarar como NO SQL.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3