. A column uses one length byte if values require no more than 255 bytes, two length bytes if values may require more than 255 bytes.
原来有N有255这样一个坎啊,超过了N的意义就不一样了。
后续测试1 ,朋友木木说是字符集的问题,那么我就执行之前设置下字符集,不过还是报错,但是我在SQLyog工具的窗口里面执行是成功(工具里面自动转变成mediumtext类型了)。
mysql> set names utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> DROP TABLE ttt;
ERROR 1051 (42S02): Unknown table 'test.ttt'
mysql> CREATE TABLE `ttt` (
-> `id` DOUBLE ,
-> `select_type` VARCHAR (57),
-> `table` VARCHAR (192),
-> `type` VARCHAR (65535),
-> `key` VARCHAR(20),
-> `possible_keys` VARCHAR (100),
-> `key_len` VARCHAR (65535),
-> `ref` VARCHAR (11),
-> `rows` DOUBLE ,
-> `Extra` VARCHAR (765)
-> );
ERROR 1074 (42000): Column length too big for column 'type' (max = 21845); use BLOB or TEXT instead
mysql> set names gbk;
Query OK, 0 rows affected (0.00 sec)
mysql> DROP TABLE ttt;
ERROR 1051 (42S02): Unknown table 'test.ttt'
mysql> CREATE TABLE `ttt` (
-> `id` DOUBLE ,
-> `select_type` VARCHAR (57),
-> `table` VARCHAR (192),
-> `type` VARCHAR (65535),
-> `key` VARCHAR(20),
-> `possible_keys` VARCHAR (100),
-> `key_len` VARCHAR (65535),
-> `ref` VARCHAR (11),
-> `rows` DOUBLE ,
-> `Extra` VARCHAR (765)
-> );
ERROR 1074 (42000): Column length too big for column 'type' (max = 21845); use BLOB or TEXT instead
mysql>
最后总结:这个可能是超过 一个表 关于 非十六进制字段 64k的限制了。
上官网:http://dev.mysql.com/doc/refman/5.5/en/column-count-limit.html:
Every table (regardless of storage engine) has a maximum row size of 65,535 bytes. Storage engines may place additional constraints on this limit, reducing the effective maximum row size.
65,535所说明的是针对的是整个表的非大字段类型的字段的bytes总合。