MySQL 은 하나의  테이블에 최대 4,096 개의 컬럼을 가질 수 있으며 row 사이즈는 65,535 bytes 로 제한되어 있습니다. 


큰 varchar 필드가 많은 테이블의 경우 row 사이즈 제한때문에 다음과 같은 SQL 은 에러가 나고 제대로 실행이 안 됩니다.

65535 초과 테이블 생성

 CREATE TABLE large_t (a VARCHAR(10000), b VARCHAR(10000),
              c VARCHAR(10000), d VARCHAR(10000), e VARCHAR(10000),
              f VARCHAR(10000), g VARCHAR(6000)) ENGINE=InnoDB CHARACTER SET utf8;
SQL

ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs

해결 방법은 위 에러 메시지에도 나온 것처럼 varchar 컬럼 대신 BLOB 나 TEXT 필드를 사용하는 것입니다. BLOB, TEXT 필드는 테이블과 분리되어 저장되므로 65,535 bytes 의 제한에 걸리지 않습니다.


Ref