今天遇到这种问题,线上的时候都没有报错,但线下的时候报data too long for column ....。后来发现线上的数据虽然没有报too long,但是数据并不全,比如varchar(1024)的字段只截取1024个字符。考虑到是MYSQL配置问题。后来发现sql_mode的设置是造成该问题的原因
sql_mode=STRICT_TRANS_TABLES 代表严格匹配,当数据类型不一致,数据长度不合要求等情况,会报错并阻止语句的执行。
所以如果对数据有严格要求的一定要做此设置,如果对用户体验要求较高的可以考虑去掉此设置