Bug #120323 Regression : "Row size too large (> 8126)" error with table using InnoDb DYNAMIC row format
Submitted: 22 Apr 12:51 Modified: 23 Apr 8:15
Reporter: Supervision NV Email Updates:
Status: Documenting Impact on me:
None 
Category:MySQL Server: DDL Severity:S1 (Critical)
Version:8.4.9 OS:Debian (12)
Assigned to: CPU Architecture:x86
Tags: ALTER TABLE, CREATE TABLE, innodb, insert, regression, UPDATE

[22 Apr 12:51] Supervision NV
Description:
When creating a table with a large number of varchar fields, we encounter the following message : 

"ERROR 1118 (42000) at line 7: 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."
(is it normal that the BLOB prefix is 0 bytes ?)

Normally this is due to using the COMPACT storage format, but here the ROW_FORMAT=DYNAMIC is specified in the CREATE_TABLE query.

When using just a few fields, the table is created with row_format=DYNAMIC, so it doesn't seem the parameter is ignored outright.

The exact same query worked in 8.4.8 with the exact same parameters in mysql.ini (we run automated server deployments on a daily basis, the configuration has not changed in quite some time, but now that 8.4.9 is released, the deployments fail).

We also tried creating the table with a few fields first then ALTER it to add fields one by one after, but the same things happen, so we have no way to create the table properly.

Setting innodb_strict_mode=OFF does not solve the problem : it allows the table to be created, but then an insert with a test row using the maximum size possible (filling all varchars to their max capacity) cannot be created, triggering the same error, whether inno_db_strict_mode is ON or OFF.

Changing the page_size is also not feasible, because even at its max (64kb, meaning ~32kb per row) the current structure would exceed it.

This happens wile loading directly into mysql via CLI in our automated deployments or PhpMyAdmin on a development system.

Moreover, the mysql Debian apt repository only provides 8.4.9 so we cannot pin the 8.4.8 version even if we wanted to.
This prevents us from deploying new servers since those tables are unusable now.

How to repeat:
Try and create this table, which fails on our side :
(names and default values have been redacted while preserving their lengths)
The sum of varchar lengths is 48598 bytes.

DROP TABLE IF EXISTS `t0xxxxxxx`;
CREATE TABLE `t0xxxxxxx` (
  `f0xxxxxxx` varchar(40) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f1xxxx` varchar(40) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'x' PRIMARY KEY,
  `f2xxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f3xxxxxxxxxxxxxxxxxxxxx` varchar(15) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f4xxxxxxxxxxxxxxxxxxx` varchar(15) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f5xxxxxxxxxxxxxxxx` varchar(15) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f6xxxxxxxxxxxxxxxx` varchar(15) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f7xxxxxxxxxxxxxxxxxx` int UNSIGNED NULL DEFAULT 0,
  `f8xxxxxxxxxxxxxxxxxx` int UNSIGNED NULL DEFAULT 0,
  `f9xxxxxxxxxxxxxxxxxxxxxxx` varchar(15) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f10xxxxxxxxxxxxxxxxxxxxxx` varchar(15) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f11xxxxxxxxxxxxxxx` tinyint NULL DEFAULT NULL,
  `f12xxxxxxxxxxxxxxxxx` tinyint NULL DEFAULT NULL,
  `f13xxxxxxxxxxx` varchar(160) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f14xxxxxxxxxxx` varchar(40) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'x',
  `f15xxxxxxxxxxxxxxxxx` varchar(160) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f16xxxxxxxxxxxxxxxxxx` varchar(416) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f17xxxxxxxxxxxxxxx` varchar(7) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f18xxxxxxxxxxxxx` varchar(4) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f19xxxxxxxxxxx` varchar(4096) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f20xxxxxxxxxxx` varchar(22) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f21xxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f22xxxxxxxxxxxxxxxxxx` varchar(8) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxx',
  `f23xxxxxxxxxxxxxxxxxxx` varchar(160) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  `f24xxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(224) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  `f25xxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(416) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  `f26xxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(224) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  `f27xxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(416) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  `f28xxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(224) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  `f29xxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(416) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  `f30xxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(224) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f31xxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(416) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f32xxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(224) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f33xxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(416) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f34xxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(224) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f35xxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(416) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f36xxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(224) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f37xxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(416) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f38xxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(224) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f39xxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(416) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f40xxxxxxxxxxxxxxxxxxx` varchar(8) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxx',
  `f41xxxxxxxxxxxxxxxxxxxx` varchar(160) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  `f42xxxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(224) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  `f43xxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(416) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  `f44xxxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(224) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  `f45xxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(416) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  `f46xxxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(224) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  `f47xxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(416) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  `f48xxxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(224) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f49xxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(416) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f50xxxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(224) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f51xxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(416) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f52xxxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(224) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f53xxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(416) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f54xxxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(224) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f55xxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(416) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f56xxxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(224) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f57xxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(416) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f58xxxxxxxxxxxxxxxxxxxx` varchar(7) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxx',
  `f59xxxxxxxxxxxxxxxxx` varchar(4) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f60xxxxxxxxxxxxxxxxxxxx` varchar(4) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f61xxxxxxxxxxxxxxxxxxx` varchar(50) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxx',
  `f62xxxxxxxxxxxxxxxxxxxxxx` datetime NULL DEFAULT NULL,
  `f63xxxxxxxxxxxxxxx` varchar(4) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxx',
  `f64xxxxxxxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f65xxxxxxxxxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f66xxxxxxxxxxxxxxxx` varchar(70) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f67xxxxxxxxxxxxxxx` varchar(4) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxx',
  `f68xxxxxxxxxxxxxxxxxxxxxxxxx` varchar(1000) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  `f69xxxxxxxxxxxxxxxxxxxxxxxxx` varchar(1000) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  `f70xxxxxxxxxxxxxxxxxxxxxxxxx` varchar(1000) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  `f71xxxxxxxxxxxxxxxxxxxxxxxxx` varchar(1000) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  `f72xxxxxxxxxxxxxxxxxxxxxxxxx` varchar(1000) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  `f73xxxxxxxxxxxxxxxxxxxxxxxxx` varchar(1000) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  `f74xxxxxxxxxxxxxxxxxxxxxxxxx` varchar(1000) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  `f75xxxxxxxxxxxxxxxxxxxxxxxxx` varchar(1000) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  `f76xxxxxxxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f77xxxxxxxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f78xxxxxxxxxxxxxxxxxxxxxxx` varchar(20) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f79xxxxxxxxxxxxxxxx` smallint UNSIGNED NULL DEFAULT 300,
  `f80xxxxxxxxxxxxxxxxxxxxxx` varchar(1) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'x',
  `f81xxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f82xxxxxxxxxxxx` varchar(25) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxxxxxxxx',
  `f83xxxxxxxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f84xxxxxxxxxxxxxxxxx` varchar(8) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'x',
  `f85xxxxxxxxxxxxxxxxxxxx` varchar(500) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxxxxxxxx',
  `f86xxxxxxxxxxxxxxxxx` varchar(1) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'x',
  `f87xxxxxxxxxxxxxxxxxxxxxxxx` varchar(250) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f88xxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f89xxxxxxxxxxxxxxxxx` tinyint NULL DEFAULT 0,
  `f90xxxxxxxxxxxxxxxxx` tinyint NULL DEFAULT 0,
  `f91xxxxxxxxxx` varchar(100) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f92xxxxxxxxxxxxx` varchar(416) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f93xxxxxxxxxxxxx` varchar(436) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f94xxxxxxxxxxxxxxxxxxx` varchar(13) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxxxx',
  `f95xxxxxxxxxxxxxxxxxx` varchar(13) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxxx',
  `f96xxxxxxxxxxxxxxxxxxx` varchar(24) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxx',
  `f97xxxxxxxxxxxxxxxxxxx` varchar(8) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxx',
  `f98xxxxxxxxxxxxxxxxxx` varchar(12) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxx',
  `f99xxxxxxxxxxxxxxxxxxxx` varchar(31) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxx',
  `f100xxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(26) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxx',
  `f101xxxxxxxxxxxxxxxxxxx` varchar(128) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxxxxx',
  `f102xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(128) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxx',
  `f103xxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(26) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxx',
  `f104xxxxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(26) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxxxxxxxxxxxx',
  `f105xxxxxxxxxxxxxxxxxxxxxxxx` varchar(30) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxx',
  `f106xxxxxxxxxxxxxxx` varchar(22) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxx',
  `f107xxxxxxxxxxxxxxxxxx` varchar(255) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f108xxxxxxxxxxxxxxxxxx` varchar(255) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f109xxxxxxxxxxxxxxxxxx` varchar(255) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f110xxxxxxxxxxxxxxxxxx` varchar(255) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f111xxxxxxxxxxxxxxxxxx` varchar(255) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f112xxxxxxxxxxxxxxxxxx` varchar(255) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f113xxxxxxxxxxxxxxxxxx` varchar(255) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f114xxxxxxxxxxxxxxxxxx` varchar(255) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f115xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f116xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f117xxxxxxxxxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f118xxxxxxxxxxxxxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f119xxxxxxxxxxxxxxxxxxxxxxxx` varchar(4) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f120xxxxxxxxxxxxxxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f121xxxxxxxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f122xxxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(4) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f123xxxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(4) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f124xxxxxxxxxxxxxxxxxxxxxxxx` varchar(4) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f125xxxxxxxxxxxxxxxxxxxxxxxx` varchar(4) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f126xxxxxxxxxxxxxxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f127xxxxxxxxxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f128xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f129xxxxxxxxxxxxxxxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f130xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f131xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f132xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f133xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f134xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f135xxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f136xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f137xxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f138xxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(6) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f139xxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f140xxxxxxxxxxxxxxxxxxxx` varchar(9) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f141xxxxxxxxxxxxxxxxxxxxxxxxx` varchar(416) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f142xxxxxxxxxxxxx` varchar(12) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f143xxxxxxxxxxxxxxxxxxxxx` varchar(6) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f144xxxxxxxxxxxxxxxx` varchar(628) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f145xxxxxxxxxxxxxxxxxxxxx` tinyint UNSIGNED NULL DEFAULT 1,
  `f146xxxxxxxxxxxxxxxxxxxx` text CHARACTER SET latin1 COLLATE latin1_general_cs NULL DEFAULT NULL,
  `f147xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f148xxxxxxxxxxxxxxxxxx` smallint UNSIGNED NULL DEFAULT 10,
  `f149xxxxxxxx` tinyint UNSIGNED NULL DEFAULT 1,
  `f150xxxxxxxxxxxxxxxxxxx` varchar(20) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxxxx',
  `f151xxxxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(4) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f152xxxxxxxxxxxxxxxxxxxxxxxxx` mediumint UNSIGNED NULL DEFAULT 0,
  `f153xxxxxxxxxxxxxxxxxxxxxxxx` varchar(1) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'x',
  `f154xxxxxxxxxxxxxxxxxxx` tinyint UNSIGNED NULL DEFAULT 1,
  `f155xxxxxxxxx` int UNSIGNED NULL DEFAULT 300,
  `f156xxxxxxxxxxxx` int UNSIGNED NULL DEFAULT 300,
  `f157xxxxxxxxxxxxxxx` varchar(120) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f158xxxxxxxxxxxxxxxxxxxxx` varchar(70) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f159xxxxxxxxxxxxxxxxxxxxx` varchar(70) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f160xxxxxxxxxxxxxxxxxxxxxxxxx` varchar(70) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f161xxxxxxxxxxxxxxxxxxxxxxxxx` varchar(70) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f162xxxxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f163xxxxxxxxxxxxxx` tinyint UNSIGNED NULL DEFAULT 1,
  `f164xxxxxxxxxx` tinyint UNSIGNED NULL DEFAULT 1,
  `f165xxxxxxxxxxx` tinyint UNSIGNED NULL DEFAULT 0,
  `f166xxxxxxxxxxxxxx` tinyint UNSIGNED NULL DEFAULT 1,
  `f167xxxxxxxxxxxxxxxx` varchar(1460) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  `f168xxxxxxxxxxx` varchar(1460) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f169xxxxxxxxxxxx` varchar(70) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f170xxxxxxxxxxxxxxxx` varchar(255) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f171xxxxxxxxxxxxxxxxxx` varchar(100) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f172xxxxxxxxxxxxxxxxxxx` tinyint UNSIGNED NULL DEFAULT 1,
  `f173xxxxxxxxxxxxxx` varchar(3072) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f174xxxxxxx` varchar(70) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f175xxxxxxx` varchar(70) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f176xxxxxxx` varchar(70) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f177xxxxxxx` varchar(70) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f178xxxxxxx` varchar(70) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f179xxxxxxx` varchar(70) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f180xxxxxxx` varchar(70) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f181xxxxxxx` varchar(70) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f182xxxxxxxxxxxxxxxxxxx` varchar(70) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f183xxxxxxxxxxxxxxxxxxx` varchar(70) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f184xxxxxxxxxxxxxxxxxxx` varchar(70) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f185xxxxxxxxxxxxxxxxxxx` varchar(70) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f186xxxxxxxxxxxxxxxxxxx` varchar(70) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f187xxxxxxxxxxxxxxxxxxx` varchar(70) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f188xxxxxxxxxxxxxxxxxxx` varchar(70) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f189xxxxxxxxxxxxxxxxxxx` varchar(70) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f190xxxxxxxxxxxxxxxxxxxxxxxx` varchar(70) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f191xxxxxxxxxxxxxxxxxxxxxxxx` varchar(70) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f192xxxxxxxxxxxxxxxxxxxxxxxx` varchar(70) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f193xxxxxxxxxxxxxxxxxxxxxxxx` varchar(70) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f194xxxxxxxxxxxxxxxxxxxxxxxx` varchar(70) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f195xxxxxxxxxxxxxxxxxxxxxxxx` varchar(70) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f196xxxxxxxxxxxxxxxxxxxxxxxx` varchar(70) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f197xxxxxxxxxxxxxxxxxxxxxxxx` varchar(70) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f198xxxxxxxxxxxxxxxxxx` mediumtext CHARACTER SET latin1 COLLATE latin1_general_cs NULL DEFAULT NULL,
  `f199xxxxxxxxxxxxxxxxxx` mediumtext CHARACTER SET latin1 COLLATE latin1_general_cs NULL DEFAULT NULL,
  `f200xxxxxxxxxxxxxxxxxxxxxxxx` mediumtext CHARACTER SET latin1 COLLATE latin1_general_cs NULL DEFAULT NULL,
  `f201xxxxxxxxxxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f202xxxxxxxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f203xxxxxxxxxxxxxxxxxxxxxxxxxx` int UNSIGNED NULL DEFAULT 0,
  `f204xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` int UNSIGNED NULL DEFAULT 0,
  `f205xxxxxxxxxxxxxxxxx` varchar(3320) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f206xxxxxxxxxxxxxxxxxxxx` varchar(3320) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f207xxxxxxxxxxxxxxxxxxxx` varchar(836) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f208xxxxxxxxxxxxxxxxx` varchar(836) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f209xxxxxxxxxxxxxxxxxxxxxxxx` mediumtext CHARACTER SET latin1 COLLATE latin1_general_cs NULL DEFAULT NULL,
  `f210xxxxxxxxxxxxxxxxxxxxxxxx` mediumtext CHARACTER SET latin1 COLLATE latin1_general_cs NULL DEFAULT NULL,
  `f211xxxxxxxxxxxxxxxxxxxxx` mediumtext CHARACTER SET latin1 COLLATE latin1_general_cs NULL DEFAULT NULL,
  `f212xxxxxxxxxxxxxxxxxxx` varchar(4096) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f213xxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f214xxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(1024) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f215xxxxxxxxxxxxxxxxx` varchar(140) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f216xxxxxxxxxxxxxxxxxxx` varchar(3) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT 'xxx',
  `f217xxxxxxxxxxxxxxxxxxx` mediumtext CHARACTER SET latin1 COLLATE latin1_general_cs NULL DEFAULT NULL,
  `f218xxxxxxxxxxxxx` varchar(64) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f219xxxxxxxxxxxx` varchar(64) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f220xxxxxxxxxxxxxxx` varchar(64) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f221xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(32) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f222xxxxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(3320) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f223xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` tinyint UNSIGNED NULL DEFAULT 1,
  `f224xxxxxxxxxxxxxxxxxxxxxxxxxxxxx` varchar(756) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f225xxxxxxxxxxxxxxxxxxxxxxxxxx` mediumtext CHARACTER SET latin1 COLLATE latin1_general_cs NULL DEFAULT NULL,
  `f226xxxxxxxxxxxxxxxxx` tinyint UNSIGNED NULL DEFAULT 0,
  `f227xxxxxxxxxxxxxxxxxxxxxxxx` mediumtext CHARACTER SET latin1 COLLATE latin1_general_cs NULL DEFAULT NULL,
  `f228xxx` varchar(64) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL DEFAULT '',
  `f229xxxxxxxxxxxx` timestamp on update CURRENT_TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE InnoDB DEFAULT CHARACTER SET latin1 COLLATE latin1_general_cs ROW_FORMAT=DYNAMIC;
[22 Apr 12:55] Supervision NV
By 'mysql.ini' I meant the config files in /etc/mysql , which are deployed by our automated scripts and have not been modified since a long time ago.
[22 Apr 13:32] Supervision NV
It is even worse than I initially thought :

After updating an existing server where such a table already exists (if it was created using a previous MySQL version e.g. 8.4.8), it too becomes subject to that bug and has insert/update errors if the data is too large.

Until this is fixed I suggest a rollback of the repos to 8.4.8 since 8.4.9 doesn't seem to be a security update, at least from what I see in the changelog.
[22 Apr 16:17] Valentin AUCLERC
Hello

We have the exact same error since yesterday, our database which was OK with mysql 8.0.45 is now KO with 8.0.46. We downgraded to 8.0.45 and it's OK again.
[23 Apr 5:42] MySQL Verification Team
Thanks for the report.  On 8.4.8 I could create that table, and insert a row.
Inplace upgrade to 8.4.9, I could still insert a row into the existing table.

However I could recreate the table from scratch on 8.4.9, with innodb_strict_mode=0   and insert a row into it.

Please try: innodb_strict_mode=0  in my.cnf as a workaround.
[23 Apr 6:34] MySQL Verification Team
with no value of innodb_strict_mode could I insert the full text long into the tables in either 8.4.8 or 8.4.9.
[23 Apr 8:15] Supervision NV
I do not experience the same outcome.

I'm attaching two test files, where I generated the maximum length values for all the varchars in that table (leaving the 'text' and 'mediumtext' fields alone for now as otherwise the test file would be several megabytes), one with innodb_strict_mode ON and the other with it OFF, otherwise identical.

Here are the results : 

------
source /tmp/test_strict_mode_on.sql
Query OK, 0 rows affected (0.00 sec)

+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| innodb_strict_mode | ON    |
+--------------------+-------+
1 row in set (0.01 sec)

Database changed
Query OK, 0 rows affected, 1 warning (0.07 sec)

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.
Empty set (0.00 sec)

ERROR 1146 (42S02): Table 'temp.t0xxxxxxx' doesn't exist
ERROR 1146 (42S02): Table 'temp.t0xxxxxxx' doesn't exist
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| innodb_strict_mode | ON    |
+--------------------+-------+
1 row in set (0.00 sec)
------
source /tmp/test_strict_mode_off.sql
Query OK, 0 rows affected (0.00 sec)

+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| innodb_strict_mode | OFF   |
+--------------------+-------+
1 row in set (0.00 sec)

Database changed
Query OK, 0 rows affected, 1 warning (0.01 sec)

Query OK, 0 rows affected, 1 warning (0.06 sec)

+----------------+
| Tables_in_temp |
+----------------+
| t0xxxxxxx      |
+----------------+
1 row in set (0.00 sec)

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.
Empty set (0.00 sec)

+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| innodb_strict_mode | OFF   |
+--------------------+-------+
1 row in set (0.00 sec)
------

As you can see, even with innodb_strict_mode as OFF I cannot insert the row into the table, even if it lets me create the table.

I managed to revert a server to 8.4.8 using .deb files from the apt cache in a yet to be upgraded server.
In that previous version, in both cases MySQL lets me create the table without warning or error but refuses to insert the row like in the 8.4.9+innodb_strict_mode=OFF case.

So it seems that 8.4.9 is more "correct" in that it emits the error earlier, not allowing to create a table that won't work later ; but it remains that we cannot use this table despite using a DYNAMIC row format if the data gets too big.

From what I understand from the docs here : https://dev.mysql.com/doc/refman/8.4/en/innodb-row-format.html, the DYNAMIC row format allows varchar fields to be offloaded off-page and only keep a 20-byte pointer inside the page until the row fits in the page size limit, so here with less than 250 varchar and text fields it should amount to less than 5000 bytes, which should leave enough for the few non-variable length fields to reach the 8126 bytes budget ?
[23 Apr 8:15] Supervision NV
test file with strict mode off

Attachment: test_strict_mode_off.sql (application/octet-stream, text), 86.58 KiB.

[23 Apr 8:16] Supervision NV
test file with strict mode on

Attachment: test_strict_mode_on.sql (application/octet-stream, text), 86.58 KiB.

[27 Apr 17:21] MySQL Verification Team
also:
 https://bugs.mysql.com/bug.php?id=120356
[28 Apr 17:43] Marc Reilly
also https://bugs.mysql.com/bug.php?id=120370
[6 May 15:52] Jean-François Gagné
> also: https://bugs.mysql.com/bug.php?id=120356

Bug#120356 was indeed marked as a Duplicate of this one.

But Bug#120356 was opened for 8.0.46, so I think the Version of this bug (Bug#120323) should be updated to add 8.0.46.

I also did a test that shows 9.7.0 is also affected, so 8.7.0 should also be added to Version.
[8 May 18:52] Meng-Hsiu Chiang
Hi, I've opened a PR for this issue at https://github.com/mysql/mysql-server/pull/657 

The fix is trivial: remove `DATA_BIG_COL(col)` that prevents table creation. The heavier part is analyzing whether this fix (partially reverting commit f9c8813) affects the deadlock fix from Bug#39129182.

In short: it doesn't. The deadlock fix is covered by the `always_inlined` check at https://github.com/mysql/mysql-server/blob/f9c88132a87a7d9e740e50bce2621999695bd3fe/storag..., which ensures navigation columns are never underestimated. Our change is in the `!always_inlined` branch — a mutually exclusive code path for non-navigation columns that are irrelevant to latch prediction.

The trade-off: removing the check allows CREATE TABLE for schemas where a worst-case INSERT (every column at max length) could fail at runtime with DB_TOO_BIG_RECORD. But this matches pre-8.0.46 behavior that has worked in production for years. The runtime error remains as a safety net.
[8 May 23:44] OCA Admin
Contribution submitted via Github - Fix "Row size too large" regression (Bug#120323) 
(*) Contribution by Meng-Hsiu Chiang (Github keeper, https://github.com/mysql/mysql-server/pull/657#issuecomment-4410209000): I confirm the code being submitted is offered under the terms of the OCA, and that I am authorized to contribute it.

Contribution: git_patch_3651480816.txt (text/plain), 28.89 KiB.

[20 May 14:52] Jean-François Gagné
Probably related, with above patch not working: Bug#120504.
[22 May 13:34] Jakub Lopuszanski
Do I understand correctly that:

innodb_strict_mode=OFF
P1. The 8.4.8 permits creation of a table with too large record size
P2. The 8.4.9 permits creation of a table with too large record size
P3. The 8.4.8 refuses insertion of too long row
P4. The 8.4.9 refuses insertion of too long row
P5. The 8.4.8 permits insertion of a short row
P6. The 8.4.9 permits insertion of a short row

innodb_strict_mode=ON
S1. The 8.4.8 permits creation of a table with too large record size
S2. The 8.4.9 refuses creation of a table with too large record size
S3. The 8.4.8 refuses insertion of too long row
S4. The 8.4.9 refuses insertion of too long row
S5. The 8.4.8 permits insertion of a short row
S6. The 8.4.9 permits insertion of a short row

If I am wrong in any of claims {P1,..P6,S1,..,S6}, please clarify which one exactly.

Assuming, my above summary is accurate, I posit that:

C1. The only change in behaviour is S1 vs S2, which is that in strict mode we are now more strict than before, preventing the user from accidentally creating a table with a definition which "permits" records which can't be inserted into the table
C2. Using innodb_strict_mode=OFF at the time of CREATE TABLE (or ALTER, etc.) is a viable workaround
[26 Jun 14:48] MySQL Admin
Posted by developer: Bug status updated to 'Patch pending'
[30 Jun 14:48] MySQL Admin
Posted by developer: Bug status updated to 'Documenting'