VARCHAR(20000)在MySQL中有效吗?

时间:2009-08-20 01:17:09

标签: mysql varchar

我需要澄清一下MySQL中varchar字段的最大长度。

我一直认为最大长度是255(255什么?我假设的字符,但这可能是我混淆的原因)。看一下我们正在使用的外部公司设置的数据库表,我看到一个字段设置为varchar(20000),保存大于255个字符的xml块。为什么这样做? 20000是有效值吗?

一些谷歌搜索显示在mysql varchar中有65,535字节的限制,我看到varchar(65535)in use,那么255限制如何与此相关?

6 个答案:

答案 0 :(得分:71)

注意MySQL版本。

http://dev.mysql.com/doc/refman/5.0/en/char.html

  

VARCHAR列中的值是可变长度字符串。长度可以指定为MySQL 5.0.3之前的0到255之间的值,5.0.3及更高版本中的0到65,535之间的值。 MySQL 5.0.3及更高版本中VARCHAR的有效最大长度受最大行大小(65,535字节,在所有列之间共享)和使用的字符集的限制。

我有什么版本的MySQL?

运行以下查询...

select version() as myVersion

答案 1 :(得分:12)

自版本5.0.3开始有效,它们将最大长度从255更改为65535。

CHAR一直是255最多

http://dev.mysql.com/doc/refman/5.0/en/char.html

答案 2 :(得分:8)

如果您期望输入太大,则最好使用TEXT,MEDIUMTEXT或LONGTEXT。

答案 3 :(得分:3)

虽然无法在varchar(2000)上构建索引

答案 4 :(得分:2)

此问题已在What is the MySQL VARCHAR max size?

得到答案

请记住,MySQL具有最大行大小限制

  

MySQL表的内部表示最大行大小限制为65,535字节,不包括BLOB和TEXT类型。 BLOB和TEXT列仅向行大小限制提供9到12个字节,因为它们的内容与行的其余部分分开存储。详细了解Limits on Table Column Count and Row Size.

单个列可以占用的最大大小,在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类型,并具有相同的最大长度和存储要求。

答案 5 :(得分:1)

MySQL手册陈述

  

VARCHAR列中的值是可变长度字符串。长度可以指定为MySQL 5.0.3之前的0到255之间的值,5.0.3及更高版本中的0到65,535之间的值。

所以这取决于您使用的版本。