前言

今天在update数据的时候遇到了一个奇怪的错误,我从一些数据中select并create table到另一个表,然后执行双表update操作,然后就遇到一下问题:

Caused by: java.sql.SQLException: Data truncated for column 'id' at row 1

create table enterprise_import_tier2 as (
    select REPLACE(GROUP_CONCAT(u.bid_enterprise,';'),',;',';') as bid_enterprise,u.enterprise_id,max(price) as price,max(business_status) as business_status
         ,max(province) as province ,max(city) as city,max(bid_province) as bid_province
    from enterprise_import u
    where u.business_status=2 and u.enterprise_id is not null and u.enterprise_id>0
    group by u.enterprise_id
);

update enterprise u,enterprise_import_tier2 uf
set u.price=uf.price,u.business_status=uf.business_status,u.update_time=now(),
    u.province=uf.province,u.city=uf.city
where u.enterprise_id=uf.enterprise_id and char_length(u.bid_enterprise)<100;

解决方案

出现这个错误,一般在于更新的字段类型长度不对等。

最后发现起因是数据变长了,导致create table的时候从varchar(255)变成了varchar(256) ,这可能是数据问题,也可能是因为使用了Group_Concat拼接导致字段变长。但是anyway,只要找到原因就可以解决了。也就是:

让报错的字段的 数据类型长度保持一直即可!

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐