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:
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:
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.
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.
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