Bonjour,
je me suis connecté sur ma base de données pour regarder ce qui ne vas pas lorsque je réalise le test d'intégrité des données.
j'ai réalisé l'action suivante pour sélectionner des tables :
///////////////////////////////////////////////////////////////////////////////////////
select 'DROP TABLE ' AS constante1 ,
table_name,
-- substr(table_name,24, 4) as "annee",
-- substr(table_name,28, 2) as "mois",
-- substr(table_name,29, 2) as "jour"
' CASCADE ; ' AS constante2
from information_schema.tables
where table_catalog = 'limesurvey'
and table_schema = 'public'
and table_type = 'BASE TABLE'
and table_name 'lime_%_survey_9912%'
///////////////////////////////////////////////////////////////////////////////////////
Cela fonctionne bien, et me génère la liste des tables concernées....
Mais en regardant le fichier de log, on voit que des erreurs sur la sélection de la table lime_questions sont présentes :
2023-02-02 11:12:27.075 CET [28495] ERREUR: la valeur « 28815429493 » est en dehors des limites pour le type integer au caractère 52
2023-02-02 11:12:27.075 CET [28495] INSTRUCTION : SELECT * FROM "lime_questions" "t" WHERE "t"."qid"='28815429493' AND "t"."sid"=139916 LIMIT 1
la valeur pour chaque lignes (si j'ai des sous questions) dépasse la limite du nombre de caractères pour le type integer.
j'ai 11 caractères au lieu de 10 maximum.
En regardant plus en détail, je constate que si dans le code de la sous question ne commence pas par une lettre (ex : SQ1) et qu'on a que des chiffres, la requête va prendre le code de la sous question qui est un titre, comme code interne de la sous question.
Les utilisateurs ont importé un questionnaire modèle, qui contenait des sous questions avec que des chiffres, et comme ils ont plein de questionnaires dupliqué (2000 lignes d'erreurs avec la sous questions), le temps de traitement lors de la vérification de l'intégrité des données, puis du nettoyage (qui plante chez moi) prends beaucoup de temps.
Je remonte le bug, c'est juste pour info, si vous constater la même chose....