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

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

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


当前回答

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

其他回答

在我的情况下,我尝试了20'000根据@Firze答案(UTF8限制)和phpMyAdmin响应的最大大小;答案是减少或选择BLOB。

所以,我认为,最后,最好是根据你拥有的MySQL版本和使用的引擎来测试自己。因为MySQL / phpMyAdmin有安全措施。

你也可以使用MEDIUMBLOB/LONGBLOB或MEDIUMTEXT/LONGTEXT

在MySQL中,一个BLOB类型最多可以存储65,534字节,如果你试图存储超过这个数量的数据,MySQL将截断数据。MEDIUMBLOB最多可以存储16,777,213个字节,LONGBLOB最多可以存储4,294,967,292个字节。

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

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

来自MySQL文档:

在MySQL 5.0.3及以后版本中,VARCHAR的有效最大长度是 取决于最大行大小(65,535字节,由 所有列)和使用的字符集。例如,utf8字符 每个字符最多需要三个字节,所以一个VARCHAR列 使用utf8字符集最多可以声明为21,844 字符。

Limits for the VARCHAR varies depending on charset used. Using ASCII would use 1 byte per character. Meaning you could store 65,535 characters. Using utf8 will use 3 bytes per character resulting in character limit of 21,844. BUT if you are using the modern multibyte charset utf8mb4 which you should use! It supports emojis and other special characters. It will be using 4 bytes per character. This will limit the number of characters per table to 16,383. Note that other fields such as INT will also be counted to these limits.

结论:

Utf8最大21,844个字符

Utf8mb4最多16,383个字符