mysql VARCHAR的最大长度到底是多少

mysql VARCHAR的最大长度到底是多少,第1张

字段的限制在字段定义的时候有以下规则: 

a) 存储限制 

varchar 字段是将实际内容单独存储在聚簇索引之外,内容开头用1到2个字节表示实际长度(长度超过255时需要2个字节),因此最大长度不能超过65535。 

b) 编码长度限制 

字符类型若为gbk,每个字符最多占2个字节,最大长度不能超过32766

字符类型若为utf8,每个字符最多占3个字节,最大长度不能超过21845

对于英文比较多的论坛 ,使用GBK则每个字符占用2个字节,而使用UTF-8英文却只占一个字节。

若定义的时候超过上述限制,则varchar字段会被强行转为text类型,并产生warning。 

c) 行长度限制

导致实际应用中varchar长度限制的是一个行定义的长度。 MySQL要求一个行的定义长度不能超过65535。若定义的表长度超过这个值,则提示

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。

mysql所有语句的长度限制(包含insert语句),受系统选项max_allowed_packet控制,可以用如下指令查询,默认值1M或16M:

show VARIABLES WHERE Variable_name LIKE 'max_allowed_packet'

也可以在my.ini配置文件里修改:

[mysqld]

max_allowed_packet = 8M


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8563678.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-18
下一篇 2023-04-18

发表评论

登录后才能评论

评论列表(0条)

保存