Erreur 'Data too long for column ticker' - Correction d'alignement du schéma
Billet #199: Erreur « Data too long for column 'ticker' »
Type: Débogage / Correction de bogue / Intégrité des données
Composants concernés: code_source_simule/flask_app.py, code_source_simule/pipeline.py, tests/test_pipeline.py
1. Contexte et Symptômes
À partir du 14 avril 2026, l'import quotidien échouait avec :
Aucune donnée n'était importée jusqu'à la résolution.
2. Investigation
Le diagnostic via SSH a révélé la cause racine :
Constatation : La base de données en production a VARCHAR(10) pour le ticker, mais code_source_simule/flask_app.py définit db.String(20). Cette incohérence schéma empêchait l'insertion des tickers modernes (ex: BRK.B, BF.A).
3. Causes Racines
| # | Cause | Statut |
|---|---|---|
| 1 | Modèle ORM db.String(20) désaligné avec VARCHAR(10) en production |
Corrigé |
| 2 | Aucun test validant la cohérence schéma/ORM | Corrigé |
4. Solutions
4.1 - Augmenter le champ ticker à VARCHAR(255) dans l'ORM
Cela s'aligne avec create_tables_if_not_exist() qui crée VARCHAR(255) pour les nouvelles installations.
4.2 - Ajouter des tests TDD
Nouvelle classe de tests TestTickerLengthValidation :
- tc-pipe-ticker01 : Insérer un ticker de longueur raisonnable
- tc-pipe-ticker02 : Insérer un ticker à longueur maximale (255 caractères)
5. Vérification
- Nouveaux tests : 2 passants
- Tests de régression : 40/40 passants, aucune casse
- Couverture : Mise à jour et stable
6. Leçons Apprises
- La cohérence ORM/Schéma est critique. Toute divergence entre les modèles SQLAlchemy et les schémas SQL doit être détectée rapidement par des tests automatisés.
- Les limites de schéma doivent être testées. Des tests comme
TestTickerLengthValidationpréviennent les erreurs "Data too long" en production. - La documentation doit s'aligner avec le code. Le Chapitre 2 a été mis à jour pour noter le champ ticker
VARCHAR(255)et la règle de cohérence schéma.