Menu

#132 Plume incompatible avec le mode strict de MySQL

open
nobody
None
5
2007-08-13
2007-08-13
gerard
No

Plume est actuellement incompatible avec le mode strict de SQL.

Dans ce mode, il se produit :

- une erreur à l'installation : voir le thread http://groups.google.com/group/plume-cms-users/browse_thread/thread/c96f24fbf724e0c6/#

- les commentaires ne fonctionnent pas : voir le thread http://groups.google.com/group/plume-cms-users/browse_thread/thread/f4e59d2d683e96d5/#

- l'indexation non plus : voir le thread http://groups.google.com/group/plume-cms-users/browse_thread/thread/692d9b9f9acf92a7/#

Les modes SQL sont détaillés dans le manuel MYSQL paragraphe 5.2.6.
Ils peuvent être changés de façon permanente dans le fichier de configuration de MySQL (My.ini) ou de façon dynamique par une instruction SQL.

Dans mon cas, le fichier My.ini contenait cette ligne :

sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,
NO_ENGINE_SUBSTITUTION"

Ceci implique le mode strict pour les tables transactionnelles et empêche d'exécuter une requête INSERT sans préciser la valeur d'un champ qui n'a pas de valeur par défaut.
Or les champs de type text par exemple ne peuvent pas avoir de valeur par défaut.
Donc en mode strict, toute requête INSERT doit préciser la valeur de tous les champs de type text, ce que ne fait pas Plume actuellement (dommage d'ailleurs).

Pour ma part, le problème a été résolu en remplaçant la ligne ci-dessus par :
mode=""
(qui est d'ailleurs est le mode par défaut de MySQL).

Une autre façon de faire serait d'inclure dans un des fichiers chargés
par Plume la requête suivante :
SET GLOBAL sql_mode=''

L'effet n'est cependant pas tout-à-fait le même puisque je suppose que dans ce cas, MySQL repasserait en mode strict au prochain redémarrage du serveur, mais si Plume exécute systématiquement cette requête, cela lui permettra de fonctionner sans problème.

A noter qu'on peut aussi désactiver le mode strict juste pour la session en cours :
SET SESSION sql_mode=''

C'est peut-être encore mieux de mettre cela, car ça ne touche en rien le fonctionnement d'éventuels autres clients et permettrait aux utilisateurs qui ont besoin du mode strict pour d'autres raisons de faire tourner Plume tout de même.

Le mieux serait tout de même de donner systématiquement une valeur à tous les champs qui n'ont pas de valeur par défaut.

Bien cordialement
Gérard

Discussion


Log in to post a comment.