picture picture
août 17, 2018 MySQL 2 Commentaires

Désactiver le mode STRICT_ALL_TABLES sur phpMyAdmin

Mode d'emploi pour désactiver le mode STRICT_ALL_TABLES dans phpMyAdminn si votre serveur MySQL ne supporte pas l'insertion de champs vides dans les tables.L’utilisation puriste de MySQL voudrait que la structure d’un champ ne permette pas qu’il soit vide. En d’autre terme tout champ devrait avoir une valeur par défaut en cas d’insertion vide, ou comporter la valeur NULL.

La plupart des versions de phpMyAdmin tolèrent, en fait, les insertions de champs vides. Lorsque vous insérez par exemple un  champ de date vide, l’application insère à la place ‘0000-00-00’.

Toutefois il peut arriver qu’un mise à jour de phpMyAdmin (ou de Wamp, en local, par exemple) entraine des messages d’erreur voire des blocages d’insertion. Il faut en ce cas désactiver le mode STRICT_ALL_TABLES sur phpMyAdmin, c’est très simple à faire.

La solution la plus pure serait de reprendre la structure de toutes ses tables pour y traquer champ par champ les structures déficientes. Cela peut-être long…

L’autre solution consiste à s’assoir un peu sur ses principes et à demander à MySQL de faire de même !

1ere étape : accéder à la variable ‘sql mode’

– Ouvrir phpMyAdmin

– Sélectionner l’icône ‘home’ de phpMyAdmin :

ésactiver le mode STRICT_ALL_TABLES

– Dans la liste des onglets qui s’affichent en haut de la page, cliquer sur ‘Variables’. On accède ici au moteur de ce bon logiciel de gestion des bases de données.

– Dans le champ filtre qui s’affiche alors, écrire ‘sql mode‘. Le champ apparait aussitôt sans rechargement de la page  (c’est beau, l’objet XMLHttpRequest :))

ésactiver le mode STRICT_ALL_TABLES

2nde étape : désactiver le mode STRICT_ALL_TABLES

– Sélectionner la ligne « sql mode » et cliquer sur le lien « modifier » qui apparait au milieu.

– On constate alors que cette variable prend par défaut la valeur « STRICT_ALL_TABLES », c’est à dire que phpMyAdmin se voit intimer l’ordre de vérifier si les champs ne sont strictement pas vides; ou dans le cas contraire si le bon développeur que vous êtes n’a pas oublié de lui donner une valeur par défaut lors de la création de ses tables …
La suite est simple : effacer cette valeur STRICT_ALL_TABLES », et cliquer sur la petite disquette de sauvegarde (qui utilise encore des disquettes 3,5 pouces pour sauvegarder ses données :roll: ?!)

ésactiver le mode STRICT_ALL_TABLES

Redémarrez  votre serveur, et tout rentre dans l’ordre.

Il peut toutefois arriver qu’à chaque redémarrage de l’application cette variable par défaut soit à nouveau renseignée à STRICT_ALL_TABLES. Cela m’est arrivé une fois sur un serveur local : la seule solution que j’avais trouvé avait été de mettre à jour la version de MySQL, qui semblait avoir un problème de compatibilité avec la version de PHP du serveur… Mais c’est une autre affaire !

2 Responses to “Désactiver le mode STRICT_ALL_TABLES sur phpMyAdmin”

2 Commentaires

  1. melvin dit :

    super,

    merci beaucoup.

  2. Veronique dit :

    Merci beaucoup pour votre publication. J’ai passé plus d’une journée à essayer de comprendre pourquoi mysql acceptait les valeurs nulles alors que je l’avais interdit. Et j’ai enfin trouvé la solution chez vous!! Bravo pour votre magnifique travail et l’aide que vous apportez aux développeurs en détresse

Commentaire

Name

Mail (ne sera pas publié)

Website

Laisser ces deux champs tels quels :
:D :-) :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: