Aller au contenu

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 :

Data too long for column 'ticker' at row N

Aucune donnée n'était importée jusqu'à la résolution.


2. Investigation

Le diagnostic via SSH a révélé la cause racine :

SHOW COLUMNS FROM titres WHERE Field = 'ticker'
# Résultat : varchar(10)

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

# flask_app.py
ticker = db.Column(db.String(255), unique=True, nullable=False)

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

  1. 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.
  2. Les limites de schéma doivent être testées. Des tests comme TestTickerLengthValidation préviennent les erreurs "Data too long" en production.
  3. 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.