"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment résoudre l'erreur « 1418 (HY000) Cette fonction n'a aucun élément DÉTERMINISTE, AUCUN SQL ou LECTURE DE DONNÉES SQL dans sa déclaration et la journalisation binaire est activée » Erreur dans MySQL ?

Comment résoudre l'erreur « 1418 (HY000) Cette fonction n'a aucun élément DÉTERMINISTE, AUCUN SQL ou LECTURE DE DONNÉES SQL dans sa déclaration et la journalisation binaire est activée » Erreur dans MySQL ?

Publié le 2024-11-16
Parcourir:102

How to Solve the \

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 :

  • Fonctions qui produisent toujours le même résultat pour les mêmes paramètres d'entrée.

NON DÉTERMINISTE :

  • Fonctions qui ne produisent pas toujours le même résultat pour la même entrée paramètres. S'il n'est pas explicitement déclaré, MySQL par défaut est NON DÉTERMINISTE.

LECTURE DES DONNÉES SQL :

  • Fonctions qui lisent uniquement les données des bases de données.

NO SQL :

  • Fonctions qui ne contiennent aucun SQL instructions.

CONTAINS SQL :

  • Fonctions qui contiennent des instructions SQL mais qui ne lisent ni n'écrivent de données.

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.

Dernier tutoriel Plus>

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