Compreendendo o erro: Requisito de declaração "DETERMINISTIC, NO SQL, or READS SQL DATA"
Ao importar um banco de dados para o MySQL, é possível para encontrar o seguinte erro:
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 erro indica que uma função definida ou procedimento armazenado não possui uma das seguintes declarações em sua definição:
Quando o log binário está habilitado no MySQL, essas declarações são necessárias para garantir a integridade dos dados e a consistência da replicação.
Correções para o erro
Para resolver esse problema, você pode utilizar um dos dois métodos:
Ativar a variável log_bin_trust_function_creators:
No console do MySQL, execute o seguinte comando:
SET GLOBAL log_bin_trust_function_creators = 1;
Como alternativa, adicione o seguinte ao seu arquivo de configuração do MySQL (por exemplo, mysql.ini):
log_bin_trust_function_creators = 1;
Ativar esta configuração permite que funções sem declarações explícitas sejam executadas durante o registro binário.
Adicione a declaração apropriada à função ou procedimento:
Para funções que sempre produzem a mesma saída para os mesmos parâmetros de entrada, use a declaração DETERMINÍSTICA. Por exemplo:
CREATE FUNCTION my_function() DETERMINISTIC BODY -- Your function logic END
Para funções que não contêm nenhuma instrução SQL, use a declaração NO SQL.
CREATE FUNCTION my_function() NO SQL BODY -- Your function logic END
Para funções que apenas leem dados do banco de dados, use a declaração READS SQL DATA.
CREATE FUNCTION my_function() READS SQL DATA BODY -- Your function logic END
Compreendendo as declarações de funções determinísticas
Funções não determinísticas podem modificar dados ou usar entradas imprevisíveis, levando a diferentes resultados para os mesmos parâmetros de entrada. Como tal, é importante declarar com precisão o comportamento da função para otimizar o desempenho e garantir a integridade dos dados.
A documentação do MySQL fornece um guia completo para as várias opções de declaração de função de função e procedimento armazenado, permitindo que você tome decisões informadas para cada função. Declarações incorretas podem impactar os planos de execução e afetar o desempenho.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3