在Linux服务器下mysql版本是5.6。在生产环境中写入数据时,
mysql报: "1406 - Data too long for column 'xxx' at row 1" 这个错。
找到原因:写入数据长度 > 表中预设置长度。
修改:修改表中预设置长度 > 写入数据长度时 。
问题解决。
疑问:
mysql 不是自动将超出字段长度数据以最大长度截取??
my.chf 默认设置:
mysql不是很熟,请问各位大神,这是什么原因???
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
<p>自动截取绝对不是什么正确方法。MySQL用得少,也许早期有过这种配置吧。但是这种以牺牲数据安全换不报错的配置,完全就是掩耳盗铃而已。看着不报错,但是数据全坏了,等修复的时候已经晚了。</p>
理是这个理,我本想改字段类型,远程Linux上修改报错(正在找原因)。后面找到这时报错原因是字段长度不够,一查 mysql有自动截取。就没想明白,为什么截取不了。而且报的错,与问题感觉是两个方向。
<p>masql中varchar好像是自动变长,但不能超出预设长度,它的变长是在预设长度的范围之内有效,超出就报错。</p>
<p>这个问题需要注意一下你的mysql的db的表类型</p>
InnoDB表:出错回滚。
MyISAM表:能转换的就按转换值插入,不能转换就出错。