Maison >base de données >tutoriel 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 ?

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 ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-01 10:44:301087parcourir

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 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 : configurer le fichier mysql.ini

log_bin_trust_function_creators = 1;

En définissant cette valeur sur 1, vous relâchez le 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 :

DETERMINISTIQUE :

  • 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 les mêmes paramètres d'entrée. 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 aucune instruction SQL.

CONTIENT SQL :

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

Choisir la déclaration correcte

Sélectionner la bonne déclaration La déclaration d'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.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn