Description:
InnoDB limits row sizes to 8k but doesn't check whether a table
exceeds it at creation time.
How to repeat:
CREATE TABLE a (
-> f1 char(255) default '-',
-> f2 char(255) default '-',
-> f3 char(255) default '-',
-> f4 char(255) default '-',
-> f5 char(255) default '-',
-> f6 char(255) default '-',
-> f7 char(255) default '-',
-> f8 char(255) default '-',
-> f9 char(255) default '-',
-> f10 char(255) default '-',
-> f11 char(255) default '-',
-> f12 char(255) default '-',
-> f13 char(255) default '-',
-> f14 char(255) default '-',
-> f15 char(255) default '-',
-> f16 char(255) default '-',
-> f17 char(255) default '-',
-> f18 char(255) default '-',
-> f19 char(255) default '-',
-> f20 char(255) default '-',
-> f21 char(255) default '-',
-> f22 char(255) default '-',
-> f23 char(255) default '-',
-> f24 char(255) default '-',
-> f25 char(255) default '-',
-> f26 char(255) default '-',
-> f27 char(255) default '-',
-> f28 char(255) default '-',
-> f29 char(255) default '-',
-> f30 char(255) default '-',
-> f31 char(255) default '-',
-> f32 char(255) default '-',
-> f33 char(255) default '-',
-> f34 char(255) default '-',
-> f35 char(255) default '-',
-> f36 char(255) default '-'
-> ) type=InnoDB;
/* no warning although the row size exceeds the 8k limit */
INSERT INTO a SET f1='x';
/* this returns 'ERROR 1030 (00000): Got error 139 from table handler' */
Suggested fix:
make CREATE TABLE check the limit
Description: InnoDB limits row sizes to 8k but doesn't check whether a table exceeds it at creation time. How to repeat: CREATE TABLE a ( -> f1 char(255) default '-', -> f2 char(255) default '-', -> f3 char(255) default '-', -> f4 char(255) default '-', -> f5 char(255) default '-', -> f6 char(255) default '-', -> f7 char(255) default '-', -> f8 char(255) default '-', -> f9 char(255) default '-', -> f10 char(255) default '-', -> f11 char(255) default '-', -> f12 char(255) default '-', -> f13 char(255) default '-', -> f14 char(255) default '-', -> f15 char(255) default '-', -> f16 char(255) default '-', -> f17 char(255) default '-', -> f18 char(255) default '-', -> f19 char(255) default '-', -> f20 char(255) default '-', -> f21 char(255) default '-', -> f22 char(255) default '-', -> f23 char(255) default '-', -> f24 char(255) default '-', -> f25 char(255) default '-', -> f26 char(255) default '-', -> f27 char(255) default '-', -> f28 char(255) default '-', -> f29 char(255) default '-', -> f30 char(255) default '-', -> f31 char(255) default '-', -> f32 char(255) default '-', -> f33 char(255) default '-', -> f34 char(255) default '-', -> f35 char(255) default '-', -> f36 char(255) default '-' -> ) type=InnoDB; /* no warning although the row size exceeds the 8k limit */ INSERT INTO a SET f1='x'; /* this returns 'ERROR 1030 (00000): Got error 139 from table handler' */ Suggested fix: make CREATE TABLE check the limit