


Pourquoi MySQL renvoie-t-il l'erreur « DETERMINISTIC, NO SQL, or READS SQL DATA » avec la journalisation binaire activée ?
Erreur : "DETERMINISTIC, NO SQL, or READS SQL DATA" Manquant dans la déclaration de fonction avec la journalisation binaire activée
Lors de l'importation d'une base de données dans MySQL, rencontrant l'erreur "1418 (HY000) : Cette fonction n'a aucun DETERMINISTIC, NO SQL ou READS SQL DATA dans sa déclaration et la journalisation binaire est activée" indique que la fonction en question n'a pas de déclaration appropriée.
Résolution :
Il existe deux méthodes pour résoudre ce problème :
-
Exécuter la commande de la console MySQL :
<code class="mysql">SET GLOBAL log_bin_trust_function_creators = 1;</code>
Cette commande assouplit la vérification des fonctions non déterministes, permettant ainsi à l'importation de se poursuivre.
-
Configurer mysql.ini :
Ajouter la ligne suivante dans le fichier de configuration mysql.ini :log_bin_trust_function_creators = 1
Explication :
La journalisation binaire enregistre toutes les modifications apportées à la base de données. Par défaut, MySQL exige que les fonctions qui modifient les données soient déclarées comme DETERMINISTIC, NO SQL ou READS SQL DATA dans leurs déclarations pour garantir qu'elles peuvent être répliquées avec précision.
Déclarations déterministes pour les fonctions stockées :
Ces déclarations informent MySQL sur la nature de la fonction, guidant les décisions d'optimisation et de réplication.
- DETERMINISTIC : Fonctions qui produisent toujours le même résultat pour les mêmes entrées, quels que soient les facteurs externes.
- NON DÉTERMINISTE : Fonctions qui peuvent produire des résultats différents pour les mêmes entrées, telles que celles contenant des fonctions MySQL non déterministes (par exemple, NOW() , UUID()).
- LECTURE DES DONNÉES SQL :Fonctions qui lisent les données de la base de données, sans les modifier.
- NO SQL :Fonctions qui ne contiennent pas d'instructions SQL.
Remarque : Si la journalisation binaire est désactivée, le paramètre log_bin_trust_function_creators ne s'applique pas. Par conséquent, il est crucial de s'assurer que les déclarations déterministes appropriées sont spécifiées.
En implémentant l'une des solutions fournies, vous pouvez résoudre l'erreur et poursuivre l'importation 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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Stock Market GPT
Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

La fonction DATE_FORMAT () de MySQL est utilisée pour personnaliser le format d'affichage de date et d'heure. La syntaxe est date_format (date, format), et prend en charge une variété de caractères de format tels que% y,% m,% d, etc., qui peuvent réaliser l'affichage de la date, les statistiques de groupe et d'autres fonctions.

La réponse est: l'instruction de cas de MySQL est utilisée pour implémenter la logique conditionnelle dans la requête, et prend en charge deux formulaires: simple et recherche. Différentes valeurs peuvent être renvoyées dynamiquement dans des clauses telles que Select, Where et OrderBy; Par exemple, dans SELECT, la classification des scores par segments fractionnaires, combinant des fonctions agrégées pour compter le nombre d'états, ou hiérarchiser les rôles spécifiques dans OrderBy, il est nécessaire de toujours terminer avec fin et il est recommandé d'utiliser d'autre pour gérer la situation par défaut.

Créez un script shell contenant la configuration de la base de données et la commande mysqldump et enregistrez-le sous Mysql_backup.sh; 2. Stockez les informations d'identification MySQL en créant un fichier ~ / .my.cnf et définissez 600 autorisations pour améliorer la sécurité, modifier le script pour utiliser l'authentification du fichier de configuration; 3. Utilisez Chmod X pour rendre l'exécutable de script et tester manuellement si la sauvegarde est réussie; 4. Ajouter des tâches chronométrées via Crontab-E, telles que 02 / path / vers / mysql_backup.sh >> / path / to / backup / backup.log2> & 1, réalisez la sauvegarde automatique et la journalisation à 2 heures du matin tous les jours; 5

INSERT ... L'implémentation OnDuplicateKeyupdate sera mise à jour si elle existe, sinon elle sera insérée et nécessite des contraintes de clé unique ou primaires; 2. Réinsert après la suppression de RemplaceInto, qui peut entraîner des modifications de l'ID d'incrémentation automatique; 3. L'insertion inserte uniquement et ne fait pas de données répétitives, et ne met pas à jour. Il est recommandé d'utiliser la première implémentation d'UPsert.

Les sous-questionnaires peuvent être utilisés dans d'où, de sélection, de sélection et d'avoir des clauses pour implémenter le filtrage ou le calcul en fonction du résultat d'une autre requête. Les opérateurs tels que dans, tous, tous sont couramment utilisés dans où; Les alias sont nécessaires comme des tables dérivées de; Les valeurs uniques doivent être renvoyées dans Select; Les sous-requêtes apparentées reposent sur la requête extérieure pour exécuter chaque ligne. Par exemple, consultez les employés dont le salaire moyen est plus élevé que le ministère ou ajoutez la liste de salaire moyenne de l'entreprise. Les sous-questionnaires améliorent la clarté logique, mais les performances peuvent être inférieures à la jointure, vous devez donc vous assurer de retourner les résultats attendus.

MySQL prend en charge le fonctionnement de la date via des fonctions et des opérateurs intégrés. 1. Utiliser Date_add () et Date_sub () pour augmenter et diminuer les dates en fonction des unités spécifiées (telles que le jour, le mois, etc.); 2. Utilisez l'intervalle et -interval pour simplifier la syntaxe pour implémenter l'ajout et la soustraction de la date; 3. Utilisez Dadiff () pour calculer la différence du nombre de jours pendant la période de deux jours, ou utilisez TimestampDiff () pour obtenir des différences d'unité de temps plus précises (telles que les heures et les minutes); 4. Les scénarios d'application courants incluent l'interrogation des commandes pour les 7 derniers jours, le calcul de la date d'expiration et de l'âge de l'utilisateur, et en veillant à ce que le type de champ de date soit correct et en évitant les entrées de date non valides, et enfin, divers besoins de fonctionnement de date sont gérés efficacement via ces fonctions et opérateurs.

AUTO_INCRAMENT génère automatiquement des valeurs uniques pour la colonne de clé primaire de la table MySQL. Lors de la création du tableau, définissez cet attribut et assurez-vous que la colonne est indexée. Lors de l'insertion de données, omettez la colonne ou définissez-la sur NULL pour déclencher une affectation automatique. L'ID le plus récemment inséré peut être obtenu via la fonction Last_insert_id (). La valeur de démarrage et la taille de l'étape peuvent être personnalisés via des variables alterables ou système, ce qui convient à la gestion unique de l'identification.

ExpliquerInmysqlRevealSQueryExecutionPlans, montrant IndexUsage, TablereadOrder, androwfilteringTooptimePerFormance; useitBereelectoAnalyzesteps, checkkeycolumnsliketypeAndrow
