MySQL 5.0.3 이전 버전은 255자를 저장할 수 있었지만 버전 5.0.3부터는 65,535자를 저장할 수 있습니다.
MySQL 공식 문서 상태 -
MySQL 5.0.3 이상에서 VARCHAR의 유효 최대 길이는 최대 행 크기(모든 열에서 공유되는 65,535바이트)와 사용된 문자 집합에 따라 달라집니다. 예를 들어 utf8 문자는 문자당 최대 3바이트가 필요할 수 있으므로 utf8 문자 집합을 사용하는 VARCHAR 열은 최대 21,844자로 선언할 수 있습니다.
최대 행 크기의 제한은 65,535바이트입니다. 이것은 모든 열을 포함하여 65,535바이트를 넘지 않아야 함을 나타냅니다.
이를 위반하면 어떻게 되는지 알아보겠습니다 -
다음은 32,765 길이의 "1" varchar와 32766의 "2" 열이 있는 테이블입니다.
길이 =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.