Maison > Article > base de données > Pourquoi ma fonction MySQL génère-t-elle une erreur « 1418 (HY000) » concernant les déclarations déterministes ?
DETERMINISTE, AUCUN SQL ou LECTURE DES DONNÉES SQL dans la déclaration de fonction avec la journalisation binaire activée
Lors de la tentative d'importation d'une base de données dans MySQL, un Un message d'erreur indiquant qu'il manque à une fonction l'une des déclarations suivantes dans sa déclaration et que la journalisation binaire est activée peut survenir :
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)
Résolution du problème
Il y a deux méthodes pour résoudre ce problème :
SET GLOBAL log_bin_trust_function_creators = 1;
log_bin_trust_function_creators = 1;
Cela assouplit la vérification des fonctions non déterministes, qui sont des fonctions qui modifient les données.
Comprendre les déclarations déterministes
Fonctions déterministes produisent toujours le même résultat pour les mêmes paramètres d’entrée, contrairement aux fonctions non déterministes. MySQL utilise ces déclarations lors de l'optimisation de la réplication.
Types de déclarations déterministes
Plusieurs types de déclarations déterministes sont disponibles :
Bonne pratique
Il est recommandé de spécifier correctement les déclarations déterministes pour les fonctions pour garantir une réplication et une intégrité des données optimales. En examinant attentivement la nature de la fonction et en utilisant les déclarations appropriées, vous pouvez éviter les erreurs et optimiser les performances de la base de données.
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!