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.
广告