我想知道MySQL VARCHAR类型的最大大小是什么。

我读到最大大小受行大小限制,约为65k。我尝试将字段设置为varchar(20000),但它说这太大了。

我可以把它设置为varchar(10000)我能设置的最大值是多少?


当前回答

请记住,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类型来克服行大小限制。

这四种文本类型分别是TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。它们对应于四种BLOB类型,具有相同的最大长度和存储需求。

关于BLOB和TEXT类型的更多详细信息

参考MySQLv8.0 https://dev.mysql.com/doc/refman/8.0/en/blob.html 参考MySQLv5.7 https://dev.mysql.com/doc/refman/5.7/en/blob.html 参考MySQLv5.6 https://dev.mysql.com/doc/refman/5.6/en/blob.html

有关数据类型存储要求的详细信息,其中涉及所有数据类型的存储要求。

其他回答

您可以使用TEXT类型,不限制为64KB。

你也可以使用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/

varchar的最大长度取决于MySQL中的最大行大小, 64KB(不包括blob): 但是,请注意,如果您使用 多字节字符集: VARCHAR(21844)字符集utf8

请记住,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类型来克服行大小限制。

这四种文本类型分别是TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。它们对应于四种BLOB类型,具有相同的最大长度和存储需求。

关于BLOB和TEXT类型的更多详细信息

参考MySQLv8.0 https://dev.mysql.com/doc/refman/8.0/en/blob.html 参考MySQLv5.7 https://dev.mysql.com/doc/refman/5.7/en/blob.html 参考MySQLv5.6 https://dev.mysql.com/doc/refman/5.6/en/blob.html

有关数据类型存储要求的详细信息,其中涉及所有数据类型的存储要求。