Limits on Table Column Count and Row Size Row Size Limit Examples •The MySQL maximum row size limit of 65,535 bytes is demonstrated in the following  InnoDB  and MyISAM  examples. The limit is enforced regardless of storage engine, even though the storage engine may be capable of supporting larger rows. •For information about  MyISAM  storage formats, see Section 16.2.3, “MyISAM Table Storage Formats” . mysql>  CREATE TABLE 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 latin1; 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 mysql>  CREATE TABLE t (a VARCHAR(10000), b VARCHAR(10000), c VARCHAR(10000), d VARCHAR(10000), e VARCHAR(10000), f VARCHAR(10000), g VARCHAR(6000)) ENGINE=MyISAM CHARACTER SET latin1; 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 In the following  MyISAM  example, changing a column to  TEXT  avoids the 65,535-byte row size limit and permits the operation to succeed because  BLOB  and  TEXT  columns only contribute 9 to 12 bytes toward the row size. mysql>  CREATE TABLE t (a VARCHAR(10000), b VARCHAR(10000), c VARCHAR(10000), d VARCHAR(10000), e VARCHAR(10000), f VARCHAR(10000), g TEXT(6000)) ENGINE=MyISAM CHARACTER SET latin1; Query OK, 0 rows affected (0.02 sec) mysql>  CREATE TABLE t (a VARCHAR(10000), b VARCHAR(10000), c VARCHAR(10000), d VARCHAR(10000), e VARCHAR(10000), f VARCHAR(10000), g TEXT(6000)) ENGINE=InnoDB CHARACTER SET latin1; Query OK, 0 rows affected (0.02 sec) •Storage for variable-length columns includes length bytes, which are counted toward the row size. For example, a  VARCHAR(255) CHARACTER SET utf8mb3  column takes two bytes to store the length of the value, so each value can take up to 767 bytes. The operation succeeds for an  InnoDB  table because changing a column to  TEXT  avoids the MySQL 65,535-byte row size limit, and  InnoDB  off-page storage of variable-length columns avoids the  InnoDB row size limit. The statement to create table  t1  succeeds because the columns require 32,765 + 2 bytes and 32,766 + 2 bytes, which falls within the maximum row size of 65,535 bytes: mysql>  CREATE TABLE t1 (c1 VARCHAR(32765) NOT NULL, c2 VARCHAR(32766) NOT NULL) ENGINE = InnoDB CHARACTER SET latin1; Query OK, 0 rows affected (0.02 sec) mysql>  CREATE TABLE t2 (c1 VARCHAR(65535) NOT NULL) ENGINE = InnoDB CHARACTER SET latin1; 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, 1744 The statement to create table  t2  fails because, although the column length is within the maximum length of 65,535 bytes, two additional bytes are required to record the length, which causes the row size to exceed 65,535 bytes: