mail[Galette-devel] [bug #8123] Erreur de création de tables MySql en 0.63


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by Christophe Dirlik on January 06, 2007 - 18:25:

Follow-up Comment #1, bug #8123 (project galette):

Re. J'ai identifié l'origine du problème. A l'installation de MySql 5.0.27,
l'option par défaut suivante s'est activée dans my.ini :

# Set the SQL mode to strict
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

Quand cette option est active, le script d'install se plante, ainsi que
d'autres dans l'application. Par exemple, en ajout d'adhérent, après
confirmation, la liste des adhérents est réaffichée, sans message
d'erreur, mais le nouvel adhérent n'est pas créé. Voir le fichier joint
pour l'erreur MySql. Ce qui est surprenant, c'est que le log Galette, trace
la création comme ayant été effectuée...

Si l'on désactive le mode strict, l'application fonctionne parfaitement.

Pour l'ajout d'adhérent, le 1er problème vient de la colonne
bool_admin_adh, qui est définie avec enum('1') et NULL autorisé.
L'insert généré par AdoDb pour cette colonne donne une valeur '' (vide) au
champ. Il faudrait lui donner une valeur nulle à la place, ou ne pas lister
le champ dans l'insert. Il y a d'autres champs dans le même cas.

J'ai jeté un oeil à AdoDb. Dans adodb.inc.php, il est posible de modifier
le comportement par défaut pour les valeurs non transmises :

        //********************************************************//
        /*
        Controls $ADODB_FORCE_TYPE mode. Default is ADODB_FORCE_VALUE (3).
        Used in GetUpdateSql and GetInsertSql functions. Thx to Niko, 
nuko#mbnet.fi

                0 = ignore empty fields. All empty fields in array are 
ignored.
                1 = force null. All empty, php null and string 'null' fields 
are changed to
sql NULL values.
                2 = force empty. All empty, php null and string 'null' fields 
are changed
to sql empty '' or 0 values.
                3 = force value. Value is left as it is. Php null and string 
'null' are set
to sql NULL values and empty fields '' are set to empty '' sql values.
        */
        define('ADODB_FORCE_IGNORE',0);
        define('ADODB_FORCE_NULL',1);
        define('ADODB_FORCE_EMPTY',2);
        define('ADODB_FORCE_VALUE',3);
    //********************************************************//

Mais une modification à ce niveau entraine à coup sûr des modifications
ailleurs dans l'application.

Vu que le passage à PEAR:DB est envisagé sous peu, ça ne vaut sans doute
pas la peine de s'y attaquer maintenant. On peut indiquer le problème dans
les Knonw Bugs?


(file #1800)
    _______________________________________________________

Additional Item Attachment:

File name: Erreurs MySql 0.63 v2.txt      Size:3 KB


    _______________________________________________________

Reply to this item at:

  <http://gna.org/bugs/?8123>

_______________________________________________
  Message posté via/par Gna!
  http://gna.org/




Related Messages


Powered by MHonArc, Updated Thu Jan 11 20:20:13 2007