Maison > Article > base de données > Comment interroger et définir sql_mode dans MySQL
Comment interroger et définir sql_mode dans
MySQL ? L'article suivant vous présentera les méthodes de requête et de configuration de sql_mode dans MySQL.
Requête et paramètres sql_mode de MySQL
1, exécutez SQL pour afficher[Recommandations associées : tutoriel vidéo mysql]
select @@session.sql_mode;
Niveau global : Afficher
select @@global.sql_mode;
2, modifier
set @@session.sql_mode='xx_mode'set session sql_mode='xx_mode'
Niveau global : Modifier
set global sql_mode='xx_mode';set @@global.sql_mode='xx_mode';
la session peut être omise, la session par défaut n'est valide que pour la session en cours
La modification globale nécessite des autorisations avancées, elle ne prendra effet qu'à la prochaine connexion, n'affecte pas la session en cours, et deviendra invalide après le redémarrage de MySQL. Étant donné que MySQL relira la valeur correspondante dans le fichier de configuration au redémarrage, si elle doit être permanente, vous devez modifier la valeur dans le fichier de configuration.
vi /etc/my.cnf
[mysqld]sql-mode = "xx_mode"
Enregistrez et quittez, redémarrez le serveur, cela prendra effet définitivement
ONLY_FULL_GROUP_BY
Pour les opérations d'agrégation GROUP BY, si les colonnes de SELECT ne le font pas apparaît dans GROUP BY, alors ce SQL est illégal car la colonne n'est pas dans la clause GROUP BY
NO_AUTO_VALUE_ON_ZERO
Cette valeur affecte l'insertion de colonnes à augmentation automatique. Dans les paramètres par défaut, l'insertion de 0 ou NULL représente la génération de la prochaine valeur auto-augmentante. Cette option est utile si l'utilisateur souhaite insérer une valeur de 0 et que la colonne s'augmente automatiquement.
STRICT_TRANS_TABLES
Dans ce mode, si une valeur ne peut pas être insérée dans une table de transactions, l'opération en cours sera interrompue, et il n'y aura aucune limite sur les tables non-transaction
NO_ZERO_IN_DATE
En mode strict , non autorisé La date ou le mois est zéro Tant que le mois ou le jour de la date contient une valeur 0, une erreur sera signalée, sauf pour '0000-00-00'
NO_ZERO_DATE
Set. cette valeur, la base de données mysql ne permet pas l'insertion de dates nulles, insérer Une date zéro générera une erreur au lieu d'un avertissement. Tout élément de l'année, du mois et du jour qui n'est pas 0 répond aux exigences. Seul '0000-00-00' signalera une erreur
ERROR_FOR_pISION_BY_ZERO
Pendant le processus INSERT ou UPDATE, si les données sont divisées. par zéro, une erreur se produira à la place. Si le mode n'est pas donné, MySQL renvoie NULL lorsque les données sont divisées par zéro
update table set num = 5 / 0 ; une erreur sera signalée après la définition du mode. S'il n'est pas défini, la modification est réussie. est nul
NO_AUTO_CREATE_USER
Désactiver GRANT pour la création d'utilisateurs avec des mots de passe vides
NO_ENGINE_SUBSTITUTION
Lance une erreur si le moteur de stockage requis est désactivé ou n'est pas compilé. Lorsque cette valeur n'est pas définie, le moteur de stockage par défaut est utilisé à la place et une exception est levée
PIPES_AS_CONCAT
traite "||" comme un opérateur de connexion de chaîne au lieu d'un opérateur OR, ce qui est identique à la base de données Oracle. Elle est également similaire à la fonction de concaténation de chaînes Concat
ANSI_QUOTES
Après avoir activé ANSI_QUOTES, les guillemets doubles ne peuvent pas être utilisés pour citer la chaîne car elle est interprétée comme un identifiant
Pour plus de connaissances liées à la programmation, veuillez visiter : Vidéos de programmation ! !
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!