sql_mode est une variable qui est facilement négligée. La valeur par défaut est nulle. Avec ce paramètre, certaines opérations illégales peuvent être autorisées, comme autoriser l'insertion de certaines données illégales. Cette valeur doit être définie sur le mode strict dans l'environnement de production, de sorte que les bases de données dans les environnements de développement et de test doivent également être définies afin que les problèmes puissent être découverts pendant la phase de développement et de test.
1 Les autorisations avancées ne prennent effet qu'à la prochaine connexion, n'affectent pas la session en cours et deviennent invalides après le redémarrage de MySQL, car MySQL relira les valeurs correspondantes dans le fichier de configuration au redémarrage s'il en a besoin. pour être permanent, vous devez modifier la valeur dans le fichier de configuration.select @@session.sql_mode;
select @@global.sql_mode;
Enregistrez et quittez, redémarrez le serveur, cela prendra effet définitivement
Les valeurs communes de sql_mode sont les suivantes :
ONLY_FULL_GROUP_BY
Pour les opérations d'agrégation GROUP BY, si les colonnes de SELECT n'apparaissent pas 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-transactionNO_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
Définissez cette valeur. , la base de données mysql ne permet pas l'insertion de dates nulles, insérer des dates nulles 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 erreurERROR_FOR_pISION_BY_ZERO
Pendant le processus INSERT ou UPDATE, si les données sont divisées par zéro. , une erreur sera générée au lieu d'un avertissement. Si le mode n'est pas donné, MySQL renvoie NULL lorsque les données sont divisées par zéroupdate 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. num est nul
NO_AUTO_CREATE_USER
Désactivez GRANT pour créer des 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éePIPES_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 d'épissage de chaîne ConcatANSI_QUOTES
Après avoir activé ANSI_QUOTES, vous ne pouvez pas utiliser de guillemets doubles pour citer la chaîne car elle est interprétée comme un identifiantRecommandations associées : "tutoriel mysql
"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!