Comment désactiver le mode strict de MySQL

Quelques Contenu Les systèmes de gestion tels que Typo, Contao, Contenido ou d'autres systèmes ont des problèmes avec le depuis MySQL 5.1 disponible en mode strict. Il s'agit du réglage par défaut depuis la version 5.7.

Pour que l'on puisse également utiliser ces systèmes CMS, il est encore possible de désactiver le mode strict du côté serveur. Bien entendu, cela n'est recommandé que sous certaines conditions.

Que fait le mode strict ?

Le mode strict de MySQL/MariaDB contrôle la façon dont les valeurs invalides ou manquantes sont traitées dans les requêtes de changement de données, y compris les déclarations INSERT, UPDATE et CREATE.

Invalide ou disparu Données entraînent des avertissements ou des erreurs lors de l'exécution de la requête SQL. Si le mode Scrict est désactivé, les requêtes non valides ou les valeurs manquantes sont ajustées et un simple avertissement est émis. Cela peut conduire à des résultats inattendus.

Un exemple serait une limite de caractères. Si le mode strict est désactivé, les caractères en excès seront coupés pour l'adapter.

Pourquoi cela ne se produit-il qu'avec certains systèmes CMS ?

On ne peut que spéculer. Le code est probablement si étendu que personne ne peut le comprendre. Sur un système de gestion de contenu travaillent beaucoup de gens, parfois ils apportent des fonctions individuelles qui ne sont alors plus envisagées pendant des années. Tant qu'aucun problème grave ne survient, ce n'est pas si grave.

Avec un système comme le whmcs, qui est également touché, la situation est tout autre. Si des données importantes sont tronquées, les affectations seront incorrectes. Cela peut être problématique dans le cas d'un règlement.

Où ces instructions peuvent-elles être appliquées ?

Les instructions se réfèrent aux systèmes Linux avec MySQL 5.6/5.7 ou MariaDB 10.1 et plus haut là où le mode strict est actif.

Un accès à la racine est nécessaire pour effectuer les modifications. Nos instructions se réfèrent toujours à Centos Linux. Avec d'autres distributions, les fichiers de configuration peuvent se trouver dans d'autres répertoires.

Étape 1 : Créer des sauvegardes

Lorsque vous modifiez des fichiers, vous devez toujours faire une sauvegarde. Il est beaucoup trop facile de supprimer quelque chose sans le vouloir.

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

La commande crée un fichier my.cnf.strict.bak à partir du fichier my.cnf dans le même répertoire.

Étape 2 : Désactiver le mode MySQL Strict

Le fichier ne contient normalement pas sql_mode=... il faut donc ajouter la ligne suivante à la section [mysqld] :

sql_mode=""

Étape 3 : Redémarrer le service MySQL

Après avoir édité le fichier, le service doit être redémarré pour appliquer les modifications.

systemctl restart mariadb

Après le redémarrage du service, vous pouvez vérifier le réglage en exécutant la commande suivante. Voici un exemple avec le mot de passe d'un Serveur Plesk. Alternativement avec root et le mot de passe.

mysql -uadmin -p`cat /etc/psa/.psa.shadow` -e "SELECT @@sql_mode ;"

La déclaration suivante devrait alors apparaître :

+————+

| @@sql_mode |

+————+

| |

+————+

Derniers articles