Anomalie #731
ferméGalette v0.7.6. Dysfonctionnement de la génération de la valeur de login_adh lors d'un import csv.
100%
Description
L'import d'un fichier csv, dûment contrôlé avec l'option "Galop d'essai", se bloque et déclenche l'erreur suivante :
::1 - 2013-10-21 10:53:36 - 3 - Something went wrong :'( | SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'e1m5jypsgm5r8mq' for key 'login_adh'
#0 D:\xampp\htdocs\galette07dev\includes\Zend-1.12.3\Zend\Db\Statement.php(303): Zend_Db_Statement_Pdo->_execute(Array)
#1 D:\xampp\htdocs\galette07dev\includes\Zend-1.12.3\Zend\Db\Adapter\Abstract.php(480): Zend_Db_Statement->execute(Array)
#2 D:\xampp\htdocs\galette07dev\includes\Zend-1.12.3\Zend\Db\Adapter\Pdo\Abstract.php(238): Zend_Db_Adapter_Abstract->query('INSERT INTO `ga...', Array)
#3 D:\xampp\htdocs\galette07dev\includes\Zend-1.12.3\Zend\Db\Adapter\Abstract.php(576): Zend_Db_Adapter_Pdo_Abstract->query('INSERT INTO `ga...', Array)
#4 D:\xampp\htdocs\galette07dev\lib\Galette\Entity\Adherent.php(1154): Zend_Db_Adapter_Abstract->insert('galette_adheren...', Array)
#5 D:\xampp\htdocs\galette07dev\lib\Galette\IO\CsvIn.php(336): Galette\Entity\Adherent->store()
#6 D:\xampp\htdocs\galette07dev\lib\Galette\IO\CsvIn.php(191): Galette\IO\CsvIn->_storeMembers('galette_import_...')
#7 D:\xampp\htdocs\galette07dev\import.php(107): Galette\IO\CsvIn->import('galette_import_...', Array, false)
#8 {main}
::1 - 2013-10-21 10:53:36 - 3 - [Galette\IO\CsvIn] Une erreur est survenue lors de l'enregistrement de l'adhérent ligne 17 (XXXX Louis) :
Le phénomène a été reproduit trois fois avec le même fichier d'import de 182 enregistrements et se déclenche de façon aléatoire. Dans le cas précité, la valeur "e1m5jypsgm5r8mq" avait été en effet attribuée automatiquement au champ login_adh de l'enregistrement précédent.
En attendant la mise en place d'un correctif, il existe une solution de dépannage qui consiste à ajouter la colonne login_adh dans le fichier modèle galette_import_model.csv ; si cette colonne porte la lettre L dans le fichier Excel, case L2, insérer la valeur suivante :
=CAR(ALEA()*26+65)&CAR(ALEA()*26+65)&CAR(ALEA()*26+65)&CAR(ALEA()*10+48)&CAR(ALEA()*10+48)&CAR(ALEA()*26+97)&CAR(ALEA()*26+97)&CAR(ALEA()*26+97)
puis valider. Il suffit alors de "tirer" cette formule vers le bas pour générer des valeurs aléatoires qui pourront être importées sans difficultés.
A noter que la génération de mots de passe via AdminTools fonctionne parfaitement.