use*_*628 285 mysql varchar maxlength
我想知道MySQL VARCHAR类型的最大大小是多少.
我读到最大尺寸受行大小约65k的限制.我尝试将字段设置为varchar(20000)但是它说这太大了.
我可以把它设置为varchar(10000).我可以设置的最大值是多少?
raj*_*ndy 282
请记住,MySQL具有最大行大小限制
MySQL表的内部表示最大行大小限制为65,535字节,不包括BLOB和TEXT类型.BLOB和TEXT列仅向行大小限制提供9到12个字节,因为它们的内容与行的其余部分分开存储.阅读有关表列数和行大小限制的更多信息.
单个列可以占用的最大大小,在MySQL 5.0.3之前和之后是不同的
VARCHAR列中的值是可变长度字符串.长度可以指定为MySQL 5.0.3之前的0到255之间的值,5.0.3及更高版本中的0到65,535之间的值.MySQL 5.0.3及更高版本中VARCHAR的有效最大长度受最大行大小(65,535字节,在所有列之间共享)和使用的字符集的限制.
但是,请注意,如果使用utf8或utf8mb4等多字节字符集,则限制较低.
使用TEXT类型以克服行大小限制.
四种TEXT类型是TINYTEXT,TEXT,MEDIUMTEXT和LONGTEXT.这些对应于四种BLOB类型,并具有相同的最大长度和存储要求.
有关BLOB和TEXT类型的更多详细信息
更
查看有关所有数据类型的存储要求的数据类型存储要求的更多详细信息.
pax*_*blo 56
根据在线文档,有64K行限制,您可以使用以下方法计算行大小:
row length = 1
+ (sum of column lengths)
+ (number of NULL columns + delete_flag + 7)/8
+ (number of variable-length columns)
Run Code Online (Sandbox Code Playgroud)
您需要记住,列长度不是它们大小的一对一映射.例如,CHAR(10) CHARACTER SET utf8十个字符中的每一个都需要三个字节,因为特定的编码必须考虑每个字符的三字节属性utf8(即MySQL的utf8编码而不是"真正的"UTF-8,最多可以有四个字节).
但是,如果行大小接近64K,则可能需要检查数据库的模式.这是一个罕见的表,需要在正确设置(3NF)数据库中这么宽 - 这是可能的,只是不常见.
如果您想使用更多,可以使用BLOB或TEXT类型.这些不计入行的64K限制(除了小的管理占用空间),但您需要了解其使用的其他问题,例如无法使用超过一定数量的整个文本块进行排序字符(虽然可以向上配置),强制临时表在磁盘上而不是在内存中,或者必须配置客户端和服务器通信缓冲区以有效地处理大小.
允许的尺寸为:
TINYTEXT 255 (+1 byte overhead)
TEXT 64K - 1 (+2 bytes overhead)
MEDIUMTEXT 16M - 1 (+3 bytes overhead)
LONGTEXT 4G - 1 (+4 bytes overhead)
Run Code Online (Sandbox Code Playgroud)
你仍然有字节/字符不匹配(这样一MEDIUMTEXT utf8列可以"只"存储大约五十万个字符,(16M-1)/3 = 5,592,405)但它仍然会大大扩展你的范围.
Att*_*ila 37
varchar的最大长度取决于MySQL中的最大行大小,即64KB(不包括BLOB):
VARCHAR(65535)但是,请注意,如果使用多字节字符集,则限制较低:
VARCHAR(21844)CHARACTER SET utf8
Fir*_*rze 17
来自MySQL文档:
MySQL 5.0.3及更高版本中VARCHAR的有效最大长度受最大行大小(65,535字节,在所有列之间共享)和使用的字符集的限制.例如,utf8字符每个字符最多可能需要三个字节,因此使用utf8字符集的VARCHAR列可以声明为最多21,844个字符.
VARCHAR的限制因使用的字符集而异.使用ASCII将使用每个字符1个字节.意思是你可以存储65,535个字符.使用utf8将使用每个字符3个字节,导致字符限制为21,844.但如果您使用的是现代多字节字符集utf8mb4,您应该使用它!它支持表情符号和其他特殊字符.每个字符使用4个字节.这会将每个表的字符数限制为16,383.请注意,其他字段(如INT)也将计入这些限制.
结论:
utf8最多21,844个字符
utf8mb4最多16,383个字符
你也可以使用MEDIUMBLOB/LONGBLOB或MEDIUMTEXT/LONGTEXT
MySQL中的BLOB类型可以存储多达65,534个字节,如果您尝试存储的数据超过这么多数据,MySQL将截断数据.MEDIUMBLOB最多可存储16,777,213个字节,LONGBLOB最多可存储4,294,967,292个字节.
Mysql 5.0.3 之前的 Varchar 数据类型可以存储 255 个字符,但从 5.0.3 开始可以存储 65,535 个字符。
但它的最大行大小限制为 65,535 字节。这意味着包括所有列,它不得超过 65,535 个字节。
在您的情况下,当您尝试设置超过 10000 时,它可能会超过 65,535,并且 mysql 会给出错误。
更多信息:https : //dev.mysql.com/doc/refman/5.0/en/column-count-limit.html
博客示例:http : //sforsuresh.in/mysql_varchar_max_length/
| 归档时间: |
|
| 查看次数: |
503665 次 |
| 最近记录: |