Maximum length for MySQL type text
See for maximum numbers:http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html
TINYBLOB, TINYTEXT L + 1 bytes, where L < 2^8 (255 Bytes)BLOB, TEXT L + 2 bytes, where L < 2^16 (64 Kilobytes)MEDIUMBLOB, MEDIUMTEXT L + 3 bytes, where L < 2^24 (16 Megabytes)LONGBLOB, LONGTEXT L + 4 bytes, where L < 2^32 (4 Gigabytes)
L is the number of bytes in your text field. So the maximum number of chars for text is 216-1 (using single-byte characters). Means 65 535 chars(using single-byte characters).
UTF-8/MultiByte encoding: using MultiByte encoding each character might consume more than 1 byte of space. For UTF-8 space consumption is between 1 to 4 bytes per char.
Type | Approx. Length | Exact Max. Length Allowed-----------------------------------------------------------TINYTEXT | 256 Bytes | 255 charactersTEXT | 64 Kilobytes | 65,535 charactersMEDIUMTEXT | 16 Megabytes | 16,777,215 charactersLONGTEXT | 4 Gigabytes | 4,294,967,295 characters
Basically, it's like:
"Exact Max. Length Allowed" = "Approx. Length" in bytes - 1
Note: If using multibyte characters (like Arabic, where each Arabic character takes 2 bytes), the column "Exact Max. Length Allowed" for TINYTEXT
can hold be up to 127 Arabic characters (Note: space, dash, underscore, and other such characters, are 1-byte characters).