首页 文章

VARCHAR(20000)在MySQL中有效吗?

提问于
浏览
60

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

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

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

6 回答

  • 2

    请注意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
    
  • 3

    它自版本5.0.3起有效,当它们将最大长度从255更改为65535时 .

    CHAR 最多一直是255 .

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

  • 1

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

  • 8

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

  • 12

    这个问题在What is the MySQL VARCHAR max size?已有答案

    Keep in mind that MySQL has a maximum row size limit

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

    Maximum size a single column can occupy, is different before and after 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等多字节字符集,则限制较低 .

    Use TEXT types inorder to overcome row size limit.

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

  • 71

    MySQL手册说明

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

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

相关问题