Bonjour,
Le fichier .doc contient le message affiché ici avec les images.
Cette erreur SQL me poursuit depuis quelques années. Impossible à reproduire car elle apparait aléatoire…. Jusqu’à aujourd’hui.
J’ai réussi a reproduire cette erreur plusieurs fois. Et j’avoue qu’elle est très vicieuse.
Car il s’agit d’une utilisation un peu détournée de LimeSurvey, mais qui doit être utilisé par certains.
1. Pré-requis :J’ai utilisé VirtualBox pour reproduire ce que j’ai dans mon environnement.Il faut donc 3 machines différentes :
· 1 VM Frontale zone Internet (
on l’appellera : S1) : adresse ip :
192.168.56.112
· 1 VM Backoffice zone intranet (
on l’appelera S2) : adresse ip :
192.168.56.113
· 1 VM base de données (
on l’appellera : S3) : adresse ip :192.168.56.114
Mes VM sont sous Centos 7 avec une base Postgres 9.4 et PHP 5.6 et apache 2.4.6.
· Une version de LimeSurvey (je suis en 3.22, mais j’ai pris la dernière en date aujourd’hui : Version 3.25.22+210413
)Les paramètres de DEBUG dans le fichier
config doivent être à 0 (important)
·
Un compte de messagerie pour recevoir les messages en cas d’erreur
2. Installation :On décompresse le fichier ZIP sur S1 et S2.On réalise l’installation sur S1 en indiquant S3 pour l’hébergement de la base de données
On copie le fichier config.php de S1 dans le répertoire d’installation de S2
. A ce stade, S1 et S2 accèdent à la même version de LimeSurvey.
3. Principes de fonctionnement :
Les créateurs de questionnaires travaillent sur S2
Les répondants se connecte sur S1 pour soumettre leurs réponses.
Les réponses partielles seront
soumises en passant au deuxième groupe et en fermant l’onglet.
Pour vérifier que le questionnaire, une fois terminé, fonctionne correctement, les créateurs doivent faire plusieurs étapes. (le questionnaire doit avoir
deux groupe avec une question pour chaque)
1. Se connecter sur S2 dans un premier navigateur (ex : Firefox)
2. Activer le questionnaire
3. Tester en utilisant le bouton <Lancer le questionnaire>
4.
Ouvrir dans un autre onglet le menu <Réponses> / <Afficher les réponses>
5. Ceci permet de voir les réponses en cours de soumission, en rafraichissant la page du navigateur, en appuyant sur F5
6. Faire 2 ou 3 réponses partielles et 2 ou 3 complètes, en rafraichissant l’onglet pour voir l’avancée des réponses.
7. Ouvrir un autre navigateur (ex : Edge)
8. Tester en utilisant l’url du questionnaire.
9.
ATTENTION : l’url n’est pas celle de S2 :
il faut utiliser celle de S1, car c’est celle que connaitrons les répondants.
10. L’URL est celle indiqué dans le BLOC URL de l’interface de S2.
11. Faire 2 ou 3 réponses partielles et 2 ou 3 complètes, en rafraichissant l’onglet pour voir l’avancée des réponses
Tests terminés, on
désactive le questionnaire, puis on réactive pour mettre à disposition le questionnaire, sans réponses parasites.
4. Comment reproduire l’erreur du code SQL qui est reçu dans la messagerie ?
Pas de debug activé dans le fichier config, sinon on ne voit pas l’erreur.
J’ai remarqué que lorsque l’erreur arrive, le SEED de la question est identique.
Tous les créateurs de questionnaires n’utilisent pas le même principe pour tester le questionnaire.
C’est grâce à cette variante que j’ai pu trouver cet erreur (ben… son questionnaire était bloqué, il a pas eu le choix de m’appeler et de m’expliquer comment il faisait lol )
Voici les étapes pour reproduire l’erreur : j’ai réussi à avoir l’erreur plus de 10 fois sur mon environnement de production, ainsi que sur ces VM de tests (avec une installation neuve de LimeSurvey : RAZ des répertoires et BDD).
A. Refaire les étapes de 1 à 11
B. Se connecter sur S2 et supprimer les réponses
C. Desactiver le questionnaire
D. Reactiver le questionnaire
E. Ouvrir votre onglet pour voir les réponses (pas obligatoire, mais permet un suivi en temps réel)
F. Tester le questionnaire en faisant une réponse partielle en utilisant
le bouton <Lancer le questionnaire>
G. Ouvrir un autre navigateur (ex : Edge)
H. Utiliser l’URL de l’interface de S2 et faire une réponse partielle
A cette étape, la liste des réponses va comporter un doublon de réponse avec un SEED identique, et des colonnes vides pour vos réponses soumises.
Le mail avec le message « CODE SQL » sera reçu dans votre boite aux lettres.
Et ce qui est diabolique……. C’est que si vous ne faite rien pendant environ 1 minute, vous pouvez refaire des tests du questionnaires avec l’URL de S2, il n’y a plus de problème.
Et si vous refaite un test avec le bouton
<Lancer le questionnaire> du serveur S1, pas de problème
Et si vous refaite un test avec l’autre navigateur et l’url du serveur S2 = CODE SQL
Donc, pour pouvoir ré-utiliser le questionnaire on a deux choix :
Ne plus faire de test après avec le bouton <Lancer>
Faire une copie du questionnaire et
SURTOUT NE PAS SUPPRIMER LES REPONSES
Car c’est la suppression des réponses précédentes, avant désactivation, qui active le problème.
Et si vous activer les fonctionnalités de DEBUG…..l’erreur n’est pas possible à reproduire (dans mon cas).
Je pense que la
génération du SEED doit s’emmêler les pinceaux entre les deux serveurs (peut être un décalage d’un millième) et il se réajuste après.
D'autres peuvent tester pour confirmer le rapport de bug.....(vu la longueur de mon post, je pense que google trad sera mon ami pour la remonté de bogue

)