IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement de jobs Discussion :

[5.4.1] Récupérer une erreur Mysql


Sujet :

Développement de jobs

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Points : 503
    Points
    503
    Par défaut [5.4.1] Récupérer une erreur Mysql
    Bonjour.

    Je n'arrive pas à récupérer l'erreur MySQL généré par un tMysqlRow. J'ai essayé avec un OnComponentError, et avec Rejects, mais il ne veut pas m'afficher la variable errorMessage (si c'est bien celle qui correspond).

    Si je ne met rien sur le tMysqlRow, l'erreur est affichée à la fin du job. Problème: je fais un Iterate sur le tMysqlRow (sans arrêter en cas d'erreur), et s'il y a une erreur, je ne sais pas à quel valeur dans la boucle elle appartient.

    Exemple: je récupère une liste de tables, et pour chaque table, je fais une requête. Si ça plante pour l'une d'entre elles, je veux savoir laquelle et quelle est l'erreur (tout en continuant la boucle).
    Si je met un tWarn sur Rejects, j'affiche la table mais je n'ai pas l'erreur.
    Si je ne mets rien, l'erreur est affichée à la fin de la log mais je ne sais pas à quelle table elle correspond.

    Merci pour votre aide

  2. #2
    Membre averti

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2011
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2011
    Messages : 160
    Points : 443
    Points
    443
    Billets dans le blog
    2
    Par défaut
    Salut GoLDoZ,

    Afin de récupérer les messages d'erreurs dans un fichier log ou dans une BD et ainsi savoir dans la liste de tes tables parcourues par la relation iterate, lequel des composants génère des erreurs, voici la manière dont je fais ça :


    1. D'abord tu paramètres tes logs et stats au niveau Projets de façon global :

      Fichier => Editer les propriétés du projet => Paramètres du Job => Stats & Logs

      Nom : log-paramtrage.png
Affichages : 385
Taille : 75,3 Ko

    2. Dans ton job fils appelé par le composant tRunJob tu lui dis bien de ne pas arrêter le traitement en cas d'erreur du fils, car c'est ce que tu veux

      Ensuite, tu peux utiliser le composant tDie dans le job fils afin de récupérer les messages d'erreurs que tu veux:

      Nom : log-erreur.png
Affichages : 362
Taille : 21,8 Ko
    3. Dans le tJava tu recupère le message dans une variable de context, tu le personnalise et tu le donnes au tDie.
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      context.message_erreur = "VOICI LE MESSAGE D'ERREUR : "+ ((String)globalMap.get("tDBInput_1_ERROR_MESSAGE"));
      Config tDie :

      Nom : log-config-tDie.png
Affichages : 347
Taille : 13,8 Ko

      Dans le champ Message d'arrêt du tDie tu lui donnes le paramètre de contexte valorisé dans le tJava, Ainsi, avant de mourir le composant tDie va déclencher le tLogCatcher et lui donnera le message d'erreur qui sera écrit dans le fichier log paramétré à l'étape 1.

    4. Si tu utilises la version payante de Talend, tu peux créer un joblet dans lequel tu utilises les composants tLogCatcher,tFlowCatcher,tFlowMeterCatcher,tFlowMeter,tStatCatcher,tDie,tWarn pour personnaliser tes logs fonctionnels et techniques selon tes besoins, il suffira juste d'appeler le même joblet dans tes différents jobs.

      Talend offre beaucoup de flexibilité dans la gestion des logs.
    Utilisez le bouton pour mettre en valeur la ou les réponses qui vous ont été les plus utiles. Marquez comme si c'est le cas.

    ''Le savoir est la seule matière qui s’accroît lorsqu’on la partage.''
    (Socrate)

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Points : 503
    Points
    503
    Par défaut
    Merci pour la réponse, je vais m'en inspirer lors de la refonte des jobs

Discussions similaires

  1. [Système] Récupérer une erreur memory_limit
    Par El Riiico dans le forum Langage
    Réponses: 3
    Dernier message: 15/03/2007, 20h28
  2. Récupérer une erreur SQL avec TIBDataSet
    Par cgone dans le forum Bases de données
    Réponses: 3
    Dernier message: 25/10/2006, 00h00
  3. [DAO VBA] Récupérer une erreur de violation de clé
    Par Caroline1 dans le forum Access
    Réponses: 5
    Dernier message: 28/04/2006, 17h39
  4. [C#] Récupérer une erreur OleDb
    Par iDaaX dans le forum Accès aux données
    Réponses: 2
    Dernier message: 10/11/2005, 16h28
  5. Réponses: 8
    Dernier message: 13/09/2005, 21h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo