Erreur MySQL : "Cette fonction n'a aucun élément DETERMINISTIC, NO SQL ou READS SQL DATA dans sa déclaration et la journalisation binaire est activée"
Lors de la tentative d'importation d'une base de données dans MySQL, une erreur peut se produire indiquant qu'une fonction ne dispose pas de l'une des déclarations suivantes dans sa déclaration : DETERMINISTIC, NO SQL ou READS SQL DATA. Cette erreur se produit lorsque la journalisation binaire est activée.
Résolution de l'erreur :
Cette erreur peut être résolue de deux manières :
Configurer la console MySQL : Exécutez la commande suivante dans la console MySQL :
SET GLOBAL log_bin_trust_function_creators = 1;
Modifier le fichier de configuration : Ajoutez la ligne suivante au fichier de configuration mysql.ini :
log_bin_trust_function_creators = 1;
Ces modifications permettent d'utiliser des fonctions non déterministes avec la journalisation binaire. Cependant, si la journalisation binaire est désactivée, ces paramètres n'affectent pas l'erreur.
Comprendre les déclarations de fonction :
Il est important de noter que les fonctions qui contiennent des instructions non déterministes, tel que NOW() ou UUID(), doit être déclaré comme NON DÉTERMINISTE. De plus, les fonctions qui lisent les données d'un schéma non répliqué sont également non déterministes.
Bonnes pratiques :
L'approche idéale consiste à comprendre et à utiliser des déclarations déterministes pour les fonctions stockées. car ils aident à l’optimisation de la réplication. MySQL recommande de spécifier explicitement l'une des déclarations mentionnées dans la définition des fonctions stockées pour éviter des erreurs potentielles.
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!