Comprendre l'erreur : exigence de déclaration "DETERMINISTIC, NO SQL, or READS SQL DATA"
Lors de l'importation d'une base de données dans MySQL, il est possible pour rencontrer l'erreur suivante :
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)
Cette erreur indique qu'une fonction définie ou une procédure stockée ne dispose pas de l'un des éléments suivants déclarations dans sa définition :
Lorsque la journalisation binaire est activée dans MySQL, ces déclarations sont requises pour garantir l'intégrité des données et la cohérence de la réplication.
Corrections de l'erreur
Pour résoudre ce problème, vous pouvez utiliser l'une des deux méthodes suivantes :
Activer log_bin_trust_function_creators Variable :
Dans la console MySQL, exécutez la commande suivante :
SET GLOBAL log_bin_trust_function_creators = 1;
Vous pouvez également ajouter ce qui suit à votre fichier de configuration MySQL (par exemple, mysql.ini):
log_bin_trust_function_creators = 1;
L'activation de ce paramètre permet aux fonctions sans déclarations explicites d'être exécutées pendant la journalisation binaire.
Ajouter la déclaration appropriée à la fonction ou Procédure :
Pour les fonctions qui produisent toujours la même sortie pour les mêmes paramètres d'entrée, utilisez la déclaration DETERMINISTIC. Par exemple :
CREATE FUNCTION my_function() DETERMINISTIC BODY -- Your function logic END
Pour les fonctions qui ne contiennent aucune instruction SQL, utilisez la déclaration NO SQL.
CREATE FUNCTION my_function() NO SQL BODY -- Your function logic END
Pour les fonctions qui lisent uniquement les données de la base de données, utilisez la déclaration READS SQL DATA.
CREATE FUNCTION my_function() READS SQL DATA BODY -- Your function logic END
Comprendre les déclarations de fonctions déterministes
Les fonctions non déterministes peuvent modifier les données ou utiliser des entrées imprévisibles, ce qui entraîne des conséquences différentes résultats pour les mêmes paramètres d’entrée. En tant que tel, il est important de déclarer avec précision le comportement des fonctions pour optimiser les performances et garantir l'intégrité des données.
La documentation MySQL fournit un guide complet des différentes options de déclaration de fonctions de fonctions et de procédures stockées, vous permettant de prendre des décisions éclairées pour chaque fonction. Les fausses déclarations peuvent avoir un impact sur les plans d'exécution et affecter les performances.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3