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 :

Data truncation: Out of range value


Sujet :

Développement de jobs

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut [Résolu] - Data truncation: Out of range value
    Salut, je suis en train de me taper la tête contre les murs, voici le message que j'ai sur de l'insertion dans une DB Mysql :
    com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value adjusted for column 'nb_entrees' at row 1

    Ce qui arrive est un double 17,17 de chez postgres et ce qui est inséré chez MySQL est un double unsigned...

    Cela arrive après que 54700 lignes aient déjà été rentrées avec succès ! (sur une total d'à peu près 95400)

    Y a-t-il un moyen d'identifier la ligne qui poserait problème ?

    Même si ce job fonctionnait très bien hier...

    Ce qui est fou c'est que j'ai essayé en tatonnant en filtrant sur les lignes et je suis arrivé à l'abération suivante :

    sur id < 10000 -> j'ai l'erreur
    sur id < 9000 -> j'ai pas l'erreur
    sur 10000 < id <= j'ai pas l'erreur

    ... Je pleure

    Qui peut m'aider ?

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    c'est à n'y rien comprendre, aujourd'hui, le job refonctionne sans erreur. Qu'est-ce qui a pu provoqué cette erreur selon vous ?

  3. #3
    Membre éprouvé
    Homme Profil pro
    Architecte Décisionnel
    Inscrit en
    Février 2008
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte Décisionnel

    Informations forums :
    Inscription : Février 2008
    Messages : 866
    Points : 1 260
    Points
    1 260
    Par défaut
    Citation Envoyé par briceg Voir le message
    Ce qui est fou c'est que j'ai essayé en tatonnant en filtrant sur les lignes et je suis arrivé à l'abération suivante :

    sur id < 10000 -> j'ai l'erreur
    sur id < 9000 -> j'ai pas l'erreur
    sur 10000 < id <= j'ai pas l'erreur
    Juste une petite remarque qui pourra peut-être t'aider : je ne connais pas postgres, mais sous oracle faire un rownum > 10000 ne fonctionne pas.
    Le rownum ne peut être utilisé pour filtrer le nombre de lignes récupérées qu'avec un rownum <.
    (C'est assez logique en fait, il ne peut jamais atteindre la ligne 10 000 puisqu'il ne récupère aucune ligne)

    Donc d'après ce que tu décris, je pense qu'il devait y avoir une ligne qui contenait une données qui te générait l'erreur.
    Si tu ne l'as plus maintenant, est-ce que cette donnée n'aurait pas été mise à jour depuis hier ?

    Nicolas

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    bonjour devnico,

    C'est possible mais bizarre, les contraintes d'insertion des données dans notre SI sont suffisamment fortes pour ne pas permettre l'insertion de données pouvant poser problème...

    En fait j'ai de nouveau cette erreur mais dans un autre job... çà me charge 125000 lignes et à chaque fois çà m'affiche cette maudite erreur sur le champs "nbentrees" défini comme double unisgned. Le max des nbentrees (donnée en input) est 4873563, je ne comprends donc pas pourquoi l'erreur parle de Data truncation: Out of range value adjusted for column 'nb_entrees' at row 1

    Par ailleurs, si j'enlève ce champs à l'exportation, j'ai toujours une erreur sur un autre champs typé double unsigned....


    çà ne me dit toujours pas pourquoi tout se passe bien jusqu'à la ligne 125000... d'ailleurs en vérifiant, toutes les données de ces 125000 lignes sont insérée correctement, pas de beans...

  5. #5
    Membre éprouvé
    Homme Profil pro
    Architecte Décisionnel
    Inscrit en
    Février 2008
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte Décisionnel

    Informations forums :
    Inscription : Février 2008
    Messages : 866
    Points : 1 260
    Points
    1 260
    Par défaut
    Il s'agit donc d'une erreur mysql lors de l'insertion.
    Est-ce que tu peux tirer un lien de rejet à partir du composant tMysqlOutput, comme pour oracle ?

    Si c'est le cas, tu peux récupérer les données de la ligne qui est rejetée et les mettre dans un fichier ou les envoyer dans la console.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    bonjour à tous,

    2 nouveaux éléments :

    1 - si j'exporte tout en srting çà marche... mais ce n'est pas ce que je veux faire....

    2 - l'erreur semblerait provenir du fait que je définis dans le schéma mysql le double comme "double unsigned" or il semble que cet attribut unsigned interdit les valeurs négatives et c'est là que pourrait être le problème d'ou le hic à l'export!

    Le problème est que si dans le schéma, au lieu de définir "double unsigned", je définis de la manière suivante les doubles :
    type : Double
    Type DB : DOUBLE
    précision : 17
    longueur : 17

    Ce qui est je pense correct, j'ai aussi l'erreur : com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value adjusted for column
    dès la première ligne sur la première colonne "double"
    Ma table est pourtant correctement crée et mes doubles convenablement paramétrés (double(17,17))

    Je ne sais vraiment plus quoi ?!? Je deviens

    Comment dois-je faire ? HELP!!!

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    autre précision : si j'exporte dans une DBpostgres, tout est OK... Seul avec Mysql je rencontre des problèmes avec les doubles...

    J'ai aussi essayé cela :

    J'ai configuré ma connection à Mysql dans Talend avec le paramètre suivant : jdbcCompliantTruncation=false
    -> mais j'ai toujours 'com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value adjusted for column...'

    J'ai aussi essayer en éliminant 'STRICT_TRANS_TABLES' et 'STRICT_ALL_TABLES' des types référencés dans le champs 'sql_mode' dans la table "proc" de la base de donnée "mysql"...
    -> J'ai toujours 'com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value adjusted for column...'

    J'ai aussi éssayé en remplaçant le mysql connector driver dans Talend, j'ai essayé les 3 MySQL Connector/J proposés ici : http://downloads.mysql.com/snapshots.php#connector-j

    Je ne sais vraiment plus quoi faire... Au secours!!!

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    [Résolu]

    double(17,17) veut dire un nombre de 17 digits dont 17 décimales donc ca fait qu'il reste 0 en entier....

    avec double(24,12), tout est OK...

    Oh punaise, tout çà pour çà....

    Désolé.

Discussions similaires

  1. Out-of-range value que dans une clause WHERE
    Par Marc_27 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 30/07/2012, 15h57
  2. Réponses: 6
    Dernier message: 23/12/2009, 11h19
  3. Out of range values
    Par Lolitaaa dans le forum Général Java
    Réponses: 1
    Dernier message: 09/12/2009, 12h00
  4. Réponses: 1
    Dernier message: 25/08/2006, 07h57
  5. Réponses: 16
    Dernier message: 12/01/2006, 16h14

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