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, c'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'une des déclarations suivantes 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.
Correctifs de l'erreur
Pour résoudre ce problème, vous pouvez utiliser l'une des deux méthodes suivantes :
Activez la variable log_bin_trust_function_creators :
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 à la 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 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, conduisant à des résultats différents 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.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!