Lors de l'importation d'une base de données MySQL, vous pouvez rencontrer l'erreur "1418 (HY000) à la ligne 10185 : Cette fonction n'a aucun DETERMINISTIC, NO SQL ou READS SQL DATA dans sa déclaration et la journalisation binaire est activée (vous pourriez-vous vouloir utiliser la variable log_bin_trust_function_creators la moins sûre)." Cette erreur se produit lorsque vous n'avez pas spécifié la nature déterministe d'une fonction dans la base de données.
Pour résoudre cette erreur, vous pouvez utiliser l'une des deux méthodes suivantes :
Méthode 1 : temporairement Désactiver la journalisation binaire
SET GLOBAL log_bin_trust_function_creators = 1;
Méthode 2 : Configurez le fichier mysql.ini
log_bin_trust_function_creators = 1;
En définissant cette valeur sur 1, vous assouplissez la vérification des fonctions non déterministes. Cette option doit être utilisée avec prudence car elle peut potentiellement compromettre l'intégrité de vos données.
Comprendre les fonctions déterministes
Pour éviter cette erreur à l'avenir, une meilleure approche consiste à utiliser des déclarations déterministes pour les fonctions stockées. Ces déclarations indiquent à MySQL si la fonction produit toujours le même résultat pour les mêmes paramètres d'entrée. Voici les différentes déclarations déterministes :
DETERMINISTE :
NON DÉTERMINISTE :
LECTURE DES DONNÉES SQL :
NO SQL :
CONTAINS SQL :
Choisir la déclaration correcte
La sélection de la déclaration correcte pour une fonction dépend de son comportement. Si le résultat de la fonction dépend de facteurs externes à la base de données, tels que l'heure actuelle ou un générateur de nombres aléatoires, il doit être déclaré NON DÉTERMINISTE. Si la fonction lit uniquement des données, elle peut être déclarée comme READS SQL DATA. Si la fonction ne contient aucune instruction SQL, elle peut être déclarée comme NO SQL.
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