Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment désactiver le mode strict de MySQL

Le mode strict de MySQL et de MariaDB contrôle la façon dont les valeurs invalides ou manquantes dans les requêtes de modification de données sont gérées ; cela inclut les instructions INSERT, UPDATE et CREATE TABLE. Lorsque le mode strict de MySQL est activé, qui est l'état par défaut, des données non valides ou manquantes peuvent provoquer des avertissements ou des erreurs lors de la tentative de traitement de la requête.

Lorsque le mode strict est désactivé, la même requête voit ses valeurs non valides ou manquantes ajustées et produit un simple avertissement. Cela peut sembler être le résultat préféré, mais avec le mode strict désactivé, certaines actions peuvent entraîner des résultats inattendus; par exemple, lorsque la valeur insérée dépasse la limite maximale de caractères, elle sera tronquée pour s'adapter à la limite.

Il existe diverses raisons pour lesquelles le mode strict de MySQL peut devoir être désactivé, mais la plus courante est lorsqu'un serveur exécute WHMCS - c'est une exigence de cet outil.

Vérification avant vol

  • Ces instructions sont spécifiquement destinées à désactiver le mode strict de MySQL sur un serveur Liquid Web géré avec cPanel.
  • Le serveur doit exécuter MySQL 5.6/5.7 ou MariaDB 10.x
  • L'accès en ligne de commande et au niveau racine via SSH sera nécessaire pour suivre ce tutoriel.

Étape 1 :Faites toujours des sauvegardes !

Chaque fois que vous modifiez des fichiers sur un serveur, il est toujours préférable de prendre une forme de sauvegarde au préalable. Cela garantit que vous disposez d'un moyen d'annuler les modifications en cas de problème. il est également avantageux car il permet de savoir quand et quelles modifications ont été apportées.

Lorsque vous êtes connecté à SSH avec l'utilisateur root, procédez comme suit :

cp -a /usr/my.cnf{,.strict.bak}
cp -a /etc/my.cnf{,.strict.bak}

La commande ci-dessus utilise 'BASH brace expansion' afin de faire une copie de sauvegarde du fichier dans son répertoire d'origine.

Étape 2 :Désactivez le mode strict de MySQL

Selon le serveur et les configurations actuelles, vous devrez peut-être modifier un ou les deux fichiers suivants sur le serveur. Généralement, les lignes de configuration pertinentes ne se trouvent que dans l'une d'entre elles, cependant, elles peuvent se trouver dans l'une ou l'autre sans causer de problèmes ; il est donc généralement préférable de vérifier les deux.

Pour modifier les fichiers, vous ouvrirez le fichier avec votre éditeur de ligne de commande préféré. Dans cet exemple, nous utilisons "vim".

vim /usr/my.cnf
vim /etc/my.cnf

Dans vim, vous pouvez appuyer sur « a » ou « i » pour entrer en mode d'insertion de texte ; appuyer sur la touche d'échappement (Esc) de votre clavier vous ramène en mode commande. Pour un rappel sur l'édition de fichiers avec vim, consultez notre Tutoriel pour nouvel utilisateur :Présentation de l'éditeur de texte Vim.

Dans chaque fichier ci-dessus, vous chercherez une ligne avec le contenu suivant :

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

Si vous trouvez une ligne similaire à celle ci-dessus qui définit la variable `sql_mode`, vous devrez la remplacer par la ligne suivante pour désactiver le mode strict de MySQL.

sql_mode=""

Une fois cet ajustement effectué ou si vous avez confirmé que le fichier n'a pas besoin d'être ajusté, vous enregistrerez et fermerez le fichier.

Étape 3 :Redémarrez le service MySQL

Enfin, pour que ces modifications soient effectives, vous devrez redémarrer le service MySQL car il ne lira les fichiers de configuration qu'au moment du chargement initial. Afin de forcer MySQL à utiliser les nouveaux fichiers de configuration, procédez comme suit :

Pour les serveurs CentOS 7 :
systemctl restart mysql

Pour CentOS 6 et versions antérieures :
/etc/init.d/mysql restart

Après avoir émis cette commande sur le serveur, le service MySQL sera redémarré et chargera les modifications apportées. Si toutes les instructions ont été suivies et complétées, le mode strict de MySQL devrait maintenant être désactivé.

Pour vérifier que le processus s'est correctement terminé, vous pouvez exécuter ce qui suit :

mysql -e "SELECT @@sql_mode;"

Le résultat peut ressembler à ce qui suit :

+--------------------------------------------+
| @@sql_mode
+--------------------------------------------+
| NO_AUTO_CREATE_USER
+--------------------------------------------+

Si vous avez des questions ou si vous n'êtes pas à l'aise pour effectuer ces modifications vous-même, n'hésitez pas à contacter Heroic Support®.