MySQL 的 VARCHAR 最大长度是多少?


5.0.3 之前的 MySQL 版本最多可以存储 255 个字符,但从 5.0.3 版本开始,它可以存储 65,535 个字符。

MySQL 官方文档指出:

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

请记住,最大行大小的限制是 65,535 字节。这意味着包括所有列在内,总大小不能超过 65,535 字节。

让我们看看如果违反了这个限制会发生什么:

这是一个包含两列的表,“one” 是长度为 32,765 的 varchar,“two” 是 32766。

长度 = 32765 + 2 + 32766 + 2 = 65535。

CREATE TABLE IF NOT EXISTS `mytable` (
`one` varchar(32765) NOT NULL,
`two` varchar(32766) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

现在让我们增加列长度:

CREATE TABLE IF NOT EXISTS `mytable` (
`one` varchar(32767) NOT NULL,
`two` varchar(32770) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

上面给出了以下错误:

#1118 - Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs

上文本身指出:

The maximum row size is 65,535 bytes. If it exceeds, an error will be visible.

更新于:2020年6月24日

5K+ 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告