2015-12-23 3 views
1

Quand je lance une requête SQL en utilisant MySQL pour Navicat avec succès, mais a échoué en utilisant java jdbc programme.Le sql comme ceci:java.sql.SQLException: données tronquées pour la colonne 'version' à la ligne 221651

INSERT INTO version_event (app_token, event_id, version) 
SELECT 
    a.app_token, 
    a.event_name event_id, 
    a.version 
FROM 
    day_custom_event a 
LEFT JOIN custom_events b ON a.event_name = b.event_id 
WHERE 
    a.channel = 'all' 
AND a.country = 'all' 
AND a.version != 'all' 
GROUP BY 
    a.app_token, 
    a.event_name, 
    a.version;" 

et la table comme ceci: entrer image description ici

enter image description here

et le programme est jdbc:

programme JDBC:

enter image description here

Répondre

0

Ici, dans votre table que vous avez défini la version colonne varchar type de données (50). Ce maximum autorise 5o caractères si vous insérez quelque chose dont la longueur de caractère est supérieure à 50 alors il vous donnera une erreur tronquée dans Java. Ainsi, comme la solution augmente la taille de 50 ou modifie le type de données de la colonne.

+0

Si la longueur de la version de la colonne est trop courte, pourquoi SQL peut-il fonctionner avec Navicat for MySQL? – WholeStack

+0

La requête SQL s'exécutera mais elle tronquera les données après le 50ème caractère. rafraîchir la table et vérifier à nouveau. –

+0

quand j'augmente la taille, cela a fonctionné. Merci beaucoup. – WholeStack

0

Habituellement, le problème se produit lorsque vous essayez d'enregistrer des données trop longues pour la colonne. Dans ce cas, la valeur de la colonne version est trop longue. Cela signifie que le champ est trop petit pour enregistrer les données. Vérifiez donc la définition du type de données de cette colonne et augmentez sa taille si nécessaire.