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.
The 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 columns to TEXT or BLOBs mysql> CREATE TABLE …[Read more]