Data truncation: Data too long for column

问题描述:Data truncation: Data too long for column ‘sku_category’ at row 4

1Data truncation: Data too long for column 'sku_category' at row 4

insert的时候,字段值太长了,超过数据库定义的varchar(256)

解决:

alter table return_plan_order_detail modify column sku_category varchar(510) ;
5.1 版本后, varchar(100) 就是指 100 个字符。

MySQL中char,varchartext类型的选用:
知道固定长度的用char,比如MD5串固定是32.
经常变化的字段用varchar.
超过255字符的只能用varchar或者text,不能用char.
能用varchar的地方不用text.blobtext类型只占用912个字节,它们的内容分散到不同行上去了。
  string一般存储短字符串,它的长度可以理解为字符长度,一般最好不要超过255个。
  如果长度大于255 最好考虑text 或者blob
  
 2.varchar(20)varchar(255)都是可变的字符串

通常情况下使用varchar(20)varchar(255)保存较短的字符串’hello world’时,占用的空间都是一样的,但使用长度较短的列却有巨大的优势。较大的列使用更多的内存,MySQL通常会分配固定大小的内存块来保存值,这对排序或使用基于内存的临时表尤其不好。同样,也会发生在使用文件排序或者基于磁盘的临时表时。

(当使用ROW_FORMAT=FIXED创建MyISAM表时,会为每行使用固定的长度空间,这样设置不同的varchar长度值时,存储相同数据所占用的空间是不一样)
  
3.字符串较长
当20<字符长度<255,varchar(20)会报错,varchar(255)会正常插入.
  
4.字符串特别长
字符长度>255,可以选择更大的值,VARCHAR(M)定义的列长度为可变长字符串,M取值可以为0~65535(64K)之间,(VARCHAR的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是65,532字节) 
Mysql 为什么默认定义varchar(255) 而不是varchar(256)

当定义varchar长度小于等于255时,长度标识位需要一个字节;
当大于255时,长度标识位需要两个字节

当我们定义一个varchar(255)的字段时,其实它真实使用的空间是256255+1)字节;(注意,字段非空,latin1编码)
当我们定义一个一个varchar(256)字段时,它真实使用的空间是258256+2)字节
https://www.jianshu.com/p/83bdcf9bd5a8
  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值