Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Not a Bug
-
10.3.17
-
None
-
Docker
Description
When creating a table with a number of varchars, MariaDB 10.3.17 throws the error "ERROR 1118 (42000): Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline."
I tested this against MariaDB 3.10.16 and it works OK and is able to create the table. I also tested against MySQL 5.7.27 and verified that it works OK and is able to create the table. All testing was done using Docker images of the respective versions.
I feel this relates to MDEV-19292.
Here is the original query that was failing:
CREATE DATABASE IF NOT EXISTS `test`; |
USE `test`; |
DROP TABLE IF EXISTS `row_too_big`; |
CREATE TABLE IF NOT EXISTS `row_too_big` |
(
|
`column0` bool NOT NULL, |
`column1` bool NOT NULL, |
`column2` bool NOT NULL, |
`column3` bool NOT NULL, |
`column4` bool NOT NULL, |
`column5` bool NOT NULL, |
`column6` bool NOT NULL, |
`column7` bool NOT NULL, |
`column8` bool NOT NULL, |
`column9` bool NOT NULL, |
`column10` bool NOT NULL, |
`column11` bool NOT NULL, |
`column12` bool NOT NULL, |
`column13` bool NOT NULL, |
`column14` bool NOT NULL, |
`column15` bool NOT NULL, |
`column16` bool NOT NULL, |
`column17` bool NOT NULL, |
`column18` date NULL, |
`column19` date NULL, |
`column20` date NULL, |
`column21` date NULL, |
`column22` date NULL, |
`column23` date NULL, |
`column24` date NULL, |
`column25` date NULL, |
`column26` date NULL, |
`column27` date NULL, |
`column28` date NULL, |
`column29` date NULL, |
`column30` date NULL, |
`column31` datetime(6) NOT NULL, |
`column32` datetime(6) NOT NULL, |
`column33` datetime(6) NULL, |
`column34` datetime(6) NULL, |
`column35` datetime(6) NULL, |
`column36` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, |
`column37` integer NOT NULL, |
`column38` integer NOT NULL, |
`column39` integer NOT NULL, |
`column40` integer NULL UNIQUE, |
`column41` integer NULL, |
`column42` integer NULL, |
`column43` integer NULL, |
`column44` integer NULL, |
`column45` integer NULL, |
`column46` longtext NOT NULL, |
`column47` longtext NULL, |
`column48` longtext NULL, |
`column49` longtext NULL, |
`column50` longtext NULL, |
`column51` longtext NULL, |
`column52` longtext NULL, |
`column53` longtext NULL, |
`column54` longtext NULL, |
`column55` longtext NULL, |
`column56` longtext NULL, |
`column57` numeric(12, 2) NULL, |
`column58` numeric(12, 2) NULL, |
`column59` smallint UNSIGNED NULL, |
`column60` varchar(1) NOT NULL, |
`column61` varchar(2) NOT NULL, |
`column62` varchar(2) NOT NULL, |
`column63` varchar(2) NULL, |
`column64` varchar(2) NULL, |
`column65` varchar(2) NULL, |
`column66` varchar(4) NOT NULL, |
`column67` varchar(7) NOT NULL, |
`column68` varchar(7) NOT NULL, |
`column69` varchar(8) NOT NULL, |
`column70` varchar(8) NULL, |
`column71` varchar(8) NULL, |
`column72` varchar(16) NOT NULL, |
`column73` varchar(16) NOT NULL, |
`column74` varchar(16) NULL, |
`column75` varchar(16) NULL, |
`column76` varchar(16) NULL, |
`column77` varchar(16) NULL, |
`column78` varchar(16) NULL, |
`column79` varchar(16) NULL, |
`column80` varchar(16) NULL, |
`column81` varchar(16) NULL, |
`column82` varchar(16) NULL, |
`column83` varchar(16) NULL, |
`column84` varchar(16) NULL, |
`column85` varchar(20) NULL, |
`column86` varchar(20) NULL, |
`column87` varchar(30) NOT NULL, |
`column88` varchar(32) NOT NULL, |
`column89` varchar(32) NOT NULL, |
`column90` varchar(32) NULL, |
`column91` varchar(32) NULL, |
`column92` varchar(32) NULL, |
`column93` varchar(32) NULL, |
`column94` varchar(32) NULL, |
`column95` varchar(32) NULL, |
`column96` varchar(32) NULL, |
`column97` varchar(32) NULL, |
`column98` varchar(32) NULL, |
`column99` varchar(32) NULL, |
`column100` varchar(32) NULL, |
`column101` varchar(32) NULL, |
`column102` varchar(32) NULL, |
`column103` varchar(32) NULL, |
`column104` varchar(32) NULL, |
`column105` varchar(32) NULL, |
`column106` varchar(32) NULL, |
`column107` varchar(32) NULL, |
`column108` varchar(32) NULL, |
`column109` varchar(32) NULL, |
`column110` varchar(32) NULL, |
`column111` varchar(32) NULL, |
`column112` varchar(64) NOT NULL, |
`column113` varchar(64) NOT NULL, |
`column114` varchar(64) NOT NULL, |
`column115` varchar(64) NULL, |
`column116` varchar(64) NULL, |
`column117` varchar(64) NULL, |
`column118` varchar(64) NULL, |
`column119` varchar(64) NULL, |
`column120` varchar(64) NULL, |
`column121` varchar(64) NULL, |
`column122` varchar(64) NULL, |
`column123` varchar(64) NULL, |
`column124` varchar(64) NULL, |
`column125` varchar(64) NULL, |
`column126` varchar(64) NULL, |
`column127` varchar(64) NULL, |
`column128` varchar(64) NULL, |
`column129` varchar(64) NULL, |
`column130` varchar(64) NULL, |
`column131` varchar(64) NULL, |
`column132` varchar(64) NULL, |
`column133` varchar(64) NULL, |
`column134` varchar(64) NULL, |
`column135` varchar(64) NULL, |
`column136` varchar(64) NULL, |
`column137` varchar(64) NULL, |
`column138` varchar(64) NULL, |
`column139` varchar(64) NULL, |
`column140` varchar(64) NULL, |
`column141` varchar(64) NULL, |
`column142` varchar(64) NULL, |
`column143` varchar(64) NULL, |
`column144` varchar(64) NULL, |
`column145` varchar(64) NULL, |
`column146` varchar(64) NULL, |
`column147` varchar(64) NULL, |
`column148` varchar(64) NULL, |
`column149` varchar(64) NULL, |
`column150` varchar(64) NULL, |
`column151` varchar(64) NULL, |
`column152` varchar(64) NULL, |
`column153` varchar(64) NULL, |
`column154` varchar(64) NULL, |
`column155` varchar(64) NULL, |
`column156` varchar(64) NULL, |
`column157` varchar(64) NULL, |
`column158` varchar(64) NULL, |
`column159` varchar(64) NULL, |
`column160` varchar(64) NULL, |
`column161` varchar(64) NULL, |
`column162` varchar(128) NOT NULL, |
`column163` varchar(128) NULL, |
`column164` varchar(128) NULL, |
`column165` varchar(128) NULL, |
`column166` varchar(128) NULL, |
`column167` varchar(128) NULL, |
`column168` varchar(128) NULL, |
`column169` varchar(128) NULL, |
`column170` varchar(128) NULL, |
`column171` varchar(128) NULL, |
`column172` varchar(128) NULL, |
`column173` varchar(128) NULL, |
`column174` varchar(128) NULL, |
`column175` varchar(128) NULL, |
`column176` varchar(128) NULL, |
`column177` varchar(128) NULL, |
`column178` varchar(128) NULL, |
`column179` varchar(128) NULL, |
`column180` varchar(254) NULL, |
`column181` varchar(254) NULL, |
`column182` varchar(254) NULL, |
`column183` varchar(254) NULL, |
`column184` varchar(255) NULL, |
`column185` varchar(256) NULL, |
`column186` varchar(256) NULL, |
`column187` varchar(256) NULL, |
`column188` varchar(256) NULL |
);
|
Here is a simplified version where if you comment the first column, the query will work OK, but leaving as is will result in the error.
CREATE DATABASE IF NOT EXISTS `test`; |
USE `test`; |
DROP TABLE IF EXISTS `row_too_big`; |
CREATE TABLE IF NOT EXISTS `row_too_big` |
(
|
`column0` numeric(12, 2) NULL, |
`column1` smallint UNSIGNED NULL, |
`column2` varchar(1) NOT NULL, |
`column3` varchar(2) NOT NULL, |
`column4` varchar(2) NOT NULL, |
`column5` varchar(2) NULL, |
`column6` varchar(2) NULL, |
`column7` varchar(2) NULL, |
`column8` varchar(4) NOT NULL, |
`column9` varchar(7) NOT NULL, |
`column10` varchar(7) NOT NULL, |
`column11` varchar(8) NOT NULL, |
`column12` varchar(8) NULL, |
`column13` varchar(8) NULL, |
`column14` varchar(16) NOT NULL, |
`column15` varchar(16) NOT NULL, |
`column16` varchar(16) NULL, |
`column17` varchar(16) NULL, |
`column18` varchar(16) NULL, |
`column19` varchar(16) NULL, |
`column20` varchar(16) NULL, |
`column21` varchar(16) NULL, |
`column22` varchar(16) NULL, |
`column23` varchar(16) NULL, |
`column24` varchar(16) NULL, |
`column25` varchar(16) NULL, |
`column26` varchar(16) NULL, |
`column27` varchar(20) NULL, |
`column28` varchar(20) NULL, |
`column29` varchar(30) NOT NULL, |
`column30` varchar(32) NOT NULL, |
`column31` varchar(32) NOT NULL, |
`column32` varchar(32) NULL, |
`column33` varchar(32) NULL, |
`column34` varchar(32) NULL, |
`column35` varchar(32) NULL, |
`column36` varchar(32) NULL, |
`column37` varchar(32) NULL, |
`column38` varchar(32) NULL, |
`column39` varchar(32) NULL, |
`column40` varchar(32) NULL, |
`column41` varchar(32) NULL, |
`column42` varchar(32) NULL, |
`column43` varchar(32) NULL, |
`column44` varchar(32) NULL, |
`column45` varchar(32) NULL, |
`column46` varchar(32) NULL, |
`column47` varchar(32) NULL, |
`column48` varchar(32) NULL, |
`column49` varchar(32) NULL, |
`column50` varchar(32) NULL, |
`column51` varchar(32) NULL, |
`column52` varchar(32) NULL, |
`column53` varchar(32) NULL, |
`column54` varchar(64) NOT NULL, |
`column55` varchar(64) NOT NULL, |
`column56` varchar(64) NOT NULL, |
`column57` varchar(64) NULL, |
`column58` varchar(64) NULL, |
`column59` varchar(64) NULL, |
`column60` varchar(64) NULL, |
`column61` varchar(64) NULL, |
`column62` varchar(64) NULL, |
`column63` varchar(64) NULL, |
`column64` varchar(64) NULL, |
`column65` varchar(64) NULL, |
`column66` varchar(64) NULL, |
`column67` varchar(64) NULL, |
`column68` varchar(64) NULL, |
`column69` varchar(64) NULL, |
`column70` varchar(64) NULL, |
`column71` varchar(64) NULL, |
`column72` varchar(64) NULL, |
`column73` varchar(64) NULL, |
`column74` varchar(64) NULL, |
`column75` varchar(64) NULL, |
`column76` varchar(64) NULL, |
`column77` varchar(64) NULL, |
`column78` varchar(64) NULL, |
`column79` varchar(64) NULL, |
`column80` varchar(64) NULL, |
`column81` varchar(64) NULL, |
`column82` varchar(64) NULL, |
`column83` varchar(64) NULL, |
`column84` varchar(64) NULL, |
`column85` varchar(64) NULL, |
`column86` varchar(64) NULL, |
`column87` varchar(64) NULL, |
`column88` varchar(64) NULL, |
`column89` varchar(64) NULL, |
`column90` varchar(64) NULL, |
`column91` varchar(64) NULL, |
`column92` varchar(64) NULL, |
`column93` varchar(64) NULL, |
`column94` varchar(64) NULL, |
`column95` varchar(64) NULL, |
`column96` varchar(64) NULL, |
`column97` varchar(64) NULL, |
`column98` varchar(64) NULL, |
`column99` varchar(64) NULL, |
`column100` varchar(64) NULL, |
`column101` varchar(64) NULL, |
`column102` varchar(64) NULL, |
`column103` varchar(64) NULL, |
`column104` varchar(128) NOT NULL, |
`column105` varchar(128) NULL, |
`column106` varchar(128) NULL, |
`column107` varchar(128) NULL, |
`column108` varchar(128) NULL, |
`column109` varchar(128) NULL, |
`column110` varchar(128) NULL, |
`column111` varchar(128) NULL, |
`column112` varchar(128) NULL, |
`column113` varchar(128) NULL, |
`column114` varchar(128) NULL, |
`column115` varchar(128) NULL, |
`column116` varchar(128) NULL, |
`column117` varchar(128) NULL, |
`column118` varchar(128) NULL, |
`column119` varchar(128) NULL, |
`column120` varchar(128) NULL, |
`column121` varchar(128) NULL, |
`column122` varchar(254) NULL, |
`column123` varchar(254) NULL, |
`column124` varchar(254) NULL, |
`column125` varchar(254) NULL, |
`column126` varchar(255) NULL, |
`column127` varchar(256) NULL, |
`column128` varchar(256) NULL, |
`column129` varchar(256) NULL, |
`column130` varchar(256) NULL |
);
|
Attachments
Issue Links
- duplicates
-
MDEV-20268 create table fails with row size too large in 10.3 but not 10.1
- Closed
-
MDEV-20346 Cannot create a certain table: Row size too large
- Closed
- relates to
-
MDEV-16969 Fix error message as promised in upstream Bug #69336
- Open
-
MDEV-19292 "Row size too large" error when creating table with lots columns when row format is DYNAMIC or COMPRESSED
- Closed
-
MDEV-20448 Add link to release notes about "Row size too large" errors
- Closed
-
MDEV-23521 Implement an InnoDB row format that can use overflow pages for smaller columns
- Open