The maximum length of a
VARCHAR is only restricted by the maximum row length. In most storage engines, the maximum row length is the maximum allowed by MySQL, which is 65,535 bytes. Only the NDB storage engine has a different maximum value.
VARCHAR data type has some overhead. If the length of
VARCHAR is less than 255, one byte per row is used to store the actual length of the string. If the length of
VARCHAR is greater than 255, the overhead cost of storing the string length is two bytes per row. Thus, the maximum length of a
VARCHAR should be 65,533 bytes.
However, that is not the case:
mysql> CREATE TABLE max_len_varchar(fld VARCHAR(65533) CHARSET latin1); ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some[Read more...]