mysql: Data truncated for column ‘id‘ at row 1

前言

今天在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,只要找到原因就可以解决了。也就是:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值