Bonjour,
Depuis plusieurs jours (je pense depuis mon passage sur Debian Buster, et une version de MySQL plus récente et moins permissive), j’ai un soucis d’archivage des logs.
Le message d’erreur :
Erreur l’archivage des historiques : {« cmd_id »:« 492 »,« archivePackage »:3600,« archiveTime »:« 2021-01-07 03:00:05 »} => [MySQL] Error code : 22003 (1264). Out of range value for column ‹ (null) › at row 1 : REPLACE INTO historyArch(cmd_id,
datetime
,value) SELECT cmd_id,MIN(datetime
),avg(CAST(value AS DECIMAL(12,2))) as value FROM history WHEREdatetime
En vérifiant, il s’agit d’un virtuel, qui me remonte mon index compteur - à l’instant : 11977713000
La requête d’archivage fait un CAST sur un décimal de 10+2 chiffres après la virgule, hors là on dépasse cette valeur.
J’ai vérifié la structure de la table d’archivage : on est sur un varchar(127) - elle peut donc encaisser bien plus que ça.
Serait-il possible de corriger cette requête pour soit éviter le CAST, soit le même un peu plus large ?
Pour la remonté d’alerte, c’est plutôt une bonne chose en fait, la version précédente de MySQL mettait « juste » la valeur maximum (alors que maintenant il retourne l’erreur mentionnée plus haut) :
| 492 | 2020-11-10 19:00:00 | 9998013989.583333333 |
| 492 | 2020-11-10 20:00:00 | 9999676281.245833333 |
| 492 | 2020-11-10 21:00:00 | 9999999999.990000000 |
| 492 | 2020-11-10 22:00:00 | 9999999999.990000000 |
| 492 | 2020-11-10 23:00:00 | 9999999999.990000000 |