java.sql.SQLException:为列'版本'截断的数据在第221651行

时间:2015-12-23 07:10:48

标签: mysql jdbc sqlexception

当我成功使用Navicat for MySQL运行sql时,但是使用java jdbc程序失败了。这样的sql:

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;"

和这样的表: 在此处输入图像描述

enter image description here

和jdbc程序是:

JDBC程序:

enter image description here

2 个答案:

答案 0 :(得分:0)

在表中,您已设置列版本数据类型varchar(50)。如果您插入字符长度超过50的任何内容,那么该最大值允许5个字符,那么它将在java中为您提供数据截断错误。

所以,因为解决方案要么将大小从50增加,要么更改列的数据类型。

答案 1 :(得分:0)

通常,当您尝试保存某些对列太长的数据时会出现问题。在这种情况下,版本列的值太长。

这意味着该字段太小而无法保存数据,因此请检查该列的数据类型定义,并在必要时增加其大小。