VARCHAR(20000)在MySQL中有效吗?

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

我一直认为最大长度是255(255是什么?我假设的字符,但这可能是我的困惑的来源)。 看看我们正在使用的外部公司build立的数据库表格,我看到一个字段设置为varchar(20000),保存超过255个字符的xml块。 为什么这个工作? 20000是有效的值吗?

有一点谷歌search显示,在MySQL的varchar有65535字节的限制,我看到varchar(65535) 在使用 ,那么255限制如何与此有关?

注意MySQL版本。

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

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

我有什么版本的MySQL?

运行以下查询…

select version() as myVersion 

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

CHAR始终是255最大值。

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

如果您期待太大的input,那么最好使用TEXT,MEDIUMTEXT或LONGTEXT。

虽然索引不能build立在varchar(2000)上,

这个问题已经在什么是MySQL的VARCHAR最大大小的答案?

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

MySQL表的内部表示的最大行大小限制为65535字节,不包括BLOB和TEXTtypes。 BLOB和TEXT列仅向行大小限制提供9到12个字节,因为它们的内容与行的其余部分分开存储。 阅读更多关于表列数和行大小的限制。

在MySQL 5.0.3之前和之后,单个列可以占用的最大大小是不同的

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

但是,请注意,如果使用utf8或utf8mb4这样的多字节字符集,则限制较低。

使用TEXTtypes来克服行大小的限制。

四种TEXTtypes是TINYTEXT,TEXT,MEDIUMTEXT和LONGTEXT。 这些对应于四种BLOBtypes,并具有相同的最大长度和存储要求。

MySQL手册说明

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

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