MySQL中varchar字段长度到底是多少?请注意其他字段的影响,因为一行最大长度65535。

在使用MySQL进行数据库表设计时,遇到一个字符串字段,需要很大的长度。于是,字段类型用varchar,长度想当然的填上65535,结果报错。如下图所示。

上网查询,原来长度65535表示的是字节数,并不是字符数。

什么意思?因为汉字的原因。汉字需要考虑编码的问题。如果用GBK编码,一个汉字用2个字节;如果用utf-8编码,一个汉字用3个字节。

因此,如果该varchar字段的字符集用GBK,则最大长度为32766;如果字符集用UTF-8,则最大长度为21845。

由于我使用的是UTF-8编码,所以上面报错,告知最大长度只能是21845。

于是填上了21845,结果还是报错。如下图所示。

最后,找到原因,原来MySQL字段长度还有一个“行限制”。即一行的最大长度为65535,超过了就会报错。BLOB类型不包括在内。

ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs。

于是,重新计算一下长度,减去其他字段的长度,可以成功保存了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 在 MySQL varchar(64) 类型的字段存储长度为 10 的英文字母会占用 10 个字节的空间。需要注意的是,额外的一些字节用于存储字符串的长度信息。因此,实际空间使用量可能略微高于 10 字节。 ### 回答2: 在MySQL字段类型为varchar(64)表示该字段长度为最多64个字符。对于英文字母来说,一个字符占用一个字节的空间。因此,如果将长度为10的英文字母存入该字段,占用的空间为10个字节。这是因为每个英文字母占用一个字节的空间。 ### 回答3: MySQL字段类型为varchar(64)存入长度为10的英文字母占用10个字节的存储空间。 varchar是一种可变长度的字符类型,它在存储时只占用实际文本长度所需要的空间,而不是固定长度。在MySQL,每个字符占用一个字节的存储空间,加上一个字节的指针来记录实际长度。 在这种情况下,假设我们将一个长度为10的英文字母"abcdefghij"存入varchar(64)字段,那么它实际上只需要占用10个字节的存储空间。因为每个字符只需要1个字节,而长度为10的字符串正好是10个字节。 值得注意的是,如果该字段存储的是文字符或其他占用多个字节的字符,那么不同的字符将占用不同的存储空间。例如,如果该字段存储的是长度为10的文字符,那么它将占用20个字节的存储空间,因为每个文字符通常需要占用2个字节的存储空间。 综上所述,MySQL字段类型为varchar(64)存入长度为10的英文字母占用10个字节的存储空间。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值