开发者社区 问答 正文

linux下mysql 数据超出字段长度后报错?报错

在Linux服务器下mysql版本是5.6。在生产环境中写入数据时,

mysql报: "1406 - Data too long for column 'xxx' at row 1" 这个错。

找到原因:写入数据长度 > 表中预设置长度。

修改:修改表中预设置长度 > 写入数据长度时 。

问题解决。

疑问:

mysql 不是自动将超出字段长度数据以最大长度截取??

my.chf 默认设置:

mysql不是很熟,请问各位大神,这是什么原因???

展开
收起
爱吃鱼的程序员 2020-06-07 16:26:22 1151 分享 版权
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
                        <p>自动截取绝对不是什么正确方法。MySQL用得少,也许早期有过这种配置吧。但是这种以牺牲数据安全换不报错的配置,完全就是掩耳盗铃而已。看着不报错,但是数据全坏了,等修复的时候已经晚了。</p>
    
                    
    
                            理是这个理,我本想改字段类型,远程Linux上修改报错(正在找原因)。后面找到这时报错原因是字段长度不够,一查 mysql有自动截取。就没想明白,为什么截取不了。而且报的错,与问题感觉是两个方向。  
                        
    
                        <p>masql中varchar好像是自动变长,但不能超出预设长度,它的变长是在预设长度的范围之内有效,超出就报错。</p>
    
                    
    
                        <p>这个问题需要注意一下你的mysql的db的表类型</p>
    

    InnoDB表:出错回滚。

    MyISAM表:能转换的就按转换值插入,不能转换就出错。

    2020-06-07 16:26:38
    赞同 展开评论