MySQL类型文本的最大长度

Cyb*_*kie 406 mysql database

我正在创建一个用于发送私人消息的表单,并希望设置maxlength适合text我的MySQL数据库表中字段的最大长度的textarea 的值.类型文本字段可以存储多少个字符?

如果很多,我能否像在varchar中那样在数据库文本类型字段中指定长度?

fyr*_*fyr 714

请参阅最大数字:http: //dev.mysql.com/doc/refman/5.0/en/storage-requirements.html

TINYBLOB, TINYTEXT       L + 1 bytes, where L < 2^8    (255 Bytes)
BLOB, TEXT               L + 2 bytes, where L < 2^16   (64 Kilobytes)
MEDIUMBLOB, MEDIUMTEXT   L + 3 bytes, where L < 2^24   (16 Megabytes)
LONGBLOB, LONGTEXT       L + 4 bytes, where L < 2^32   (4 Gigabytes)
Run Code Online (Sandbox Code Playgroud)

L是文本字段中的字节数.因此,文本的最大字符数为2 16 -1(使用单字节字符).表示65 535个字符(使用单字节字符).

UTF-8/MultiByte编码:使用MultiByte编码,每个字符可能占用超过1个字节的空间.对于UTF-8,每个字符的空间消耗在1到4个字节之间.

  • 请注意,大小限制为*字节*.因此,如果您使用多字节字符,则在TEXT列中不会得到2 ^ 16个字符,但是您可以在2 ^ 16个字节中存储多个字符. (9认同)
  • 请注意,在MySQL中,utf8最多消耗3个字节,utf8mb4最多消耗4个.[参考](https://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html) (5认同)
  • 比尔卡文说的话.BYTES,不是字符.字符可以使用4个字节来存储给定的编码(如UTF-8). (3认同)
  • @ fyr-这里L + 2字节的含义是什么,其中L <2 ^ 16?你能再详细说明一下吗?另外,你可以告诉我在文本字段中可以存储多少个字符?请.... (2认同)
  • @JJ L是字符数,字符数需要小于2到16的幂.2 ^ 16 = 65536.所以你可以输入65535个字符,消耗65535个字节+3个字节= 65个538个字节/完整填充场. (2认同)

小智 122

TINYTEXT:256字节
TEXT:65,535字节
MEDIUMTEXT:16,777,215字节
LONGTEXT:4,294,967,295字节

  • 根据接受的答案,我认为TINYTEXT应该是255个字节而不是256个字节? (5认同)

evi*_*iko 68

Type       | Approx. Length     | Exact Max. Length Allowed
-----------------------------------------------------------
TINYTEXT   | 256 Bytes          |           255 characters
TEXT       |  64 Kilobytes      |        65,535 characters
MEDIUMTEXT |  16 Megabytes      |    16,777,215 characters
LONGTEXT   |   4 Gigabytes      | 4,294,967,295 characters
Run Code Online (Sandbox Code Playgroud)

注意:如果使用多字节字符(如阿拉伯字母,每个字符占2个字节),"允许的最大长度"列将具有不同的长度.例如:如果使用2字节字符,则确切的最大长度为TINYTEXT127个字符.基本上,它是允许-1的字节数.


Bli*_*ndy 19

根据http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html,限制为L + 2 bytes, where L < 2^16或64k.

你不应该担心限制它,它会自动分解成随着字符串的增长而添加的块,所以它不会总是盲目地使用64k.


SCC*_*SCC 8

类型文本字段可以存储多少个字符?

根据文档如果字符集是UTF8,则最多可以使用21,844个字符

如果很多,我能否像在varchar中那样在db文本类型字段中指定长度?

你不需要指定长度.如果您需要更多字符使用数据类型MEDIUMTEXT或LONGTEXT.对于VARCHAR,指定长度不适用于存储要求,仅适用于从数据库中检索数据的方式.


Sac*_*ith 7

TINYTEXT 256 bytes
TEXT 65,535 bytes ~64kb
MEDIUMTEXT 16,777,215 bytes ~16MB
LONGTEXT 4,294,967,295 bytes ~4GB
Run Code Online (Sandbox Code Playgroud)

TINYTEXT是一种字符串数据类型,最多可以存储255字符.

TEXT是一种字符串数据类型,可以存储多达65,535字符.TEXT通常用于简短的文章.

LONGTEXT是一个字符串数据类型,具有最大4,294,967,295字符长度.使用LONGTEXT,如果你需要存储大量的文本,如小说的一章.

  • 旁注:我认为 43 亿字符将是整本书的一部分,而不仅仅是一章^^ 假设每行 80 个字符,每页 50 行(两者都相当慷慨,可能是一本 a4 大小的书),那么仍然等于大约 1 *millIion* 页。这将是一个非常他妈的长章:D MEDIUMTEXT 相当于大约 4000 页,具有相同的数字,这仍然是很多,但正常的 TEXT 将只有大约 16 页,这可能太短了。 (3认同)