5.0.3 之前的 MySQL 版本能够存储 255 个字符,但从 5.0.3 版本开始,它能够存储 65,535 个字符。
MySQL 官方文档说明 -
MySQL 5.0.3 及更高版本中 VARCHAR 的有效最大长度受最大行大小(65,535 字节,在所有列之间共享)和使用的字符集的约束。例如,utf8 字符可能需要每个字符最多三个字节,因此可以将使用 utf8 字符集的 VARCHAR 列声明为最多 21,844 个字符。
请记住,最大行大小的限制是 65,535bytes.This表示包括所有列它不应超过 65,535 字节。
让我们看看如果违反会发生什么 -
这是一个包含两列的表,“one”varchar 的长度为 32,765,“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.