"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 > ¿Por qué aparece el error \"DETERMINISTIC, NO SQL o LEADS SQL DATA\" en MySQL?

¿Por qué aparece el error \"DETERMINISTIC, NO SQL o LEADS SQL DATA\" en MySQL?

Publicado el 2024-11-13
Navegar:292

Why Do I Get the \

Comprensión del error: Requisito de declaración "DETERMINISTA, SIN SQL o LECTURA DE DATOS SQL"

Al importar una base de datos a MySQL, es posible para encontrar el siguiente error:

1418 (HY000) at line 10185: 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)

Este error indica que una función definida o un procedimiento almacenado carece de uno de los siguientes declaraciones en su definición:

  • DETERMINISTIC
  • NO SQL
  • LEE SQL DATOS

Cuando el registro binario está habilitado en MySQL, estas declaraciones son necesarias para garantizar la integridad de los datos y la coherencia de la replicación.

Soluciones para el error

Para resolver este problema, puede utilizar uno de dos métodos:

  1. Habilitar log_bin_trust_function_creators Variable:

    • En la consola MySQL, ejecute el siguiente comando:

      SET GLOBAL log_bin_trust_function_creators = 1;
    • Como alternativa, agregue lo siguiente a su archivo de configuración de MySQL (por ejemplo, mysql.ini):

      log_bin_trust_function_creators = 1;

    Habilitar esta configuración permite ejecutar funciones sin declaraciones explícitas durante el registro binario.

  2. Agregar la Declaración Correspondiente a la Función o Procedimiento:

    • Para funciones que siempre producen la misma salida para los mismos parámetros de entrada, use la declaración DETERMINISTICA. Por ejemplo:

      CREATE FUNCTION my_function() DETERMINISTIC
      BODY
       -- Your function logic
      END
    • Para funciones que no contienen declaraciones SQL, utilice la declaración NO SQL.

      CREATE FUNCTION my_function() NO SQL
      BODY
       -- Your function logic
      END
    • Para funciones que solo leen datos de la base de datos, utilice la declaración READS SQL DATA.

      CREATE FUNCTION my_function() READS SQL DATA
      BODY
       -- Your function logic
      END

Comprensión de las declaraciones de funciones deterministas

Las funciones no deterministas pueden modificar datos o utilizar entradas impredecibles, lo que lleva a diferentes resultados para los mismos parámetros de entrada. Como tal, es importante declarar con precisión el comportamiento de la función para optimizar el rendimiento y garantizar la integridad de los datos.

La documentación de MySQL proporciona una guía completa de las diversas funciones y opciones de declaración de funciones de procedimientos almacenados, lo que le permite tomar decisiones informadas para cada función. Las declaraciones erróneas pueden afectar los planes de ejecución y afectar el rendimiento.

Ú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