Maison >base de données >tutoriel mysql >Comment définir de manière permanente le SQL_MODE global dans MySQL ?

Comment définir de manière permanente le SQL_MODE global dans MySQL ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-01 17:00:12703parcourir

How to Permanently Set Global SQL_MODE in MySQL?

Définition de SQL_MODE global dans MySQL : un guide

Lorsque l'on travaille avec MySQL, on rencontre souvent le besoin de modifier le paramètre SQL_MODE. Ce mode régit une gamme de comportements SQL et de configurations d'analyseur, affectant des facteurs tels que la validation des données, la gestion des transactions, etc.

La structure des commandes est-elle correcte ?

La syntaxe pour définir plusieurs modes dans SQL_MODE utilisant la commande SET est correct :

SET GLOBAL SQL_MODE='NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLE','NO_AUTO_CREATE_USER','NO_ENGINE_SUBSTITUTION'

Avantages de Session et Global Modes

  • Mode session : Affecte uniquement la session en cours et est réinitialisé à la fin de la session. Idéal pour les paramètres SQL_MODE temporaires ou spécifiques à l'utilisateur.
  • Mode global : Affecte toutes les sessions suivantes jusqu'à ce qu'elles soient modifiées. Convient aux configurations permanentes à l'échelle du système qui s'appliquent à tous les utilisateurs.

Mode global vs mode session

Lorsque vous êtes confronté à un scénario tel que la mise à jour de la base de données avec des valeurs UNC en utilisant différents utilisateurs , définir un mode global pour NO_BACKSLASH_ESCAPES est logique car cela garantit que tous les utilisateurs sont concernés, quels que soient leurs paramètres de session.

Définition de SQL_MODE global En permanence

Malheureusement, la modification directe des paramètres globaux à l'aide de SET n'est pas persistante et se réinitialise après le redémarrage de MySQL. Pour rendre les modifications permanentes, définissez le mode dans le fichier de configuration (/etc/mysql/my.cnf) :

[mysqld]
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

Pour les versions MySQL plus récentes (par exemple, 5.7.8 ), utilisez la syntaxe suivante :

[mysqld]
sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"

Conclusion

Pour les paramètres SQL_MODE persistants à l'échelle du système qui affectent tous les utilisateurs, la définition d'un mode global est préférable approche. Des modifications permanentes doivent être apportées au fichier de configuration, garantissant que le comportement SQL souhaité est cohérent d'une session à l'autre.

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