Bug lors de la validation d'un examen

Modérateurs: admin, ppollet

Bug lors de la validation d'un examen

Messagepar yannfery » 03 02 2011 16:49

Lors du passage d'une certification quelques étudiants (seulement 3) ont reçu une erreur fatale leur empêchant de valider leur réponse. La levée de cette erreur doit certainement venir d'une erreur venant de notre application.

Le message d'erreur Field 'drapeau' doesn't have a default value survient lors de l'appel de la page codes/qcm/actions.php

En cherchant dans le code, la fonction levant l'erreur est dans le fichier commun/lib_resultats.php
Code: Tout sélectionner
insert_record("resultatsexamens",$ligne,false,'id',true);


Dans la table resultatsexamens il y a un champ drapeau qui ne doit pas être null, mais visiblement dans l'objet ligne $ligne il n'y a pas d'attribut pour drapeau, ce qui provoque l'erreur.
yannfery
 
Messages: 14
Inscription: 03 11 2010 9:55

Re: Bug lors de la validation d'un examen

Messagepar ppollet » 04 02 2011 10:13

Ce pb est traité dans la FAQ.
http://c2isrv.univ-rennes1.fr/wikipfc2i ... ault_value

Ca vient surement d'une install MySQL sous Windows trop restrictive. Ce qui est bizarre est que ca n'a pas été pour tous ?

Une autre solution sera d'ajouter une ligne :

Code: Tout sélectionner
    $ligne->drapeau=0; // rev 980 pb avec MySQL sous Windows ?


juste avant l'appel à insert_record()

ca sera corrigé cette nuit sur les nationales...
A+
Kronenbourg à la Poste, Chronopost à la bourre
ppollet
 
Messages: 220
Inscription: 26 10 2006 12:39
Localisation: INSA de Lyon, Bâtiment Louis Neel

Re: Bug lors de la validation d'un examen

Messagepar yannfery » 07 02 2011 10:09

Dans la FAQ il propose de modifier la configuration de mysql :
Code: Tout sélectionner
par défaut
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
par
sql-mode=""


Si j'ai bien lu la documentation de mysql, le sql-mode [url]=http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html#sqlmode_strict_trans_tablesSTRICT_TRANS_TABLES[/url] bloque l'insertion ou la modification des données si elles ne respectent pas les règles. Dans notre cas, le champ Drapeau est obligatoire (not null) et ne propose pas de valeur par défaut dans le description de la table, de fait si on ne le renseigne pas dans la requête d'insertion mysql refuse de l'insérer.

Donc supprimer ce sql-mode n'est (à mon avis) pas la bonne solution.

Il faut soit, comme vous l'avez fait, initialiser la valeur pour la requête, soit avoir une valeur par défaut dans la description de la table, soit mettre le champ à not null s'il n'a pas forcément besoin d'une valeur.

Dans mon cas, cette erreur est survenue à cause d'une bug de mon application renseignant l'établissement des étudiants à -1. Une fois corrigée, l'erreur n'est plus revenue.
yannfery
 
Messages: 14
Inscription: 03 11 2010 9:55


Retourner vers Aspects techniques

Qui est en ligne

Utilisateurs parcourant ce forum: Google [Bot] et 1 invité

cron