Details
-
Task
-
Status: Open (View Workflow)
-
Major
-
Resolution: Unresolved
-
None
Description
In MariaDB 10.2+ we still get weird and useless error messages like this:
...
|
-> , `h_29` tinyint unsigned null
|
-> , `h_3` tinyint unsigned null
|
-> , `h_30` tinyint unsigned null
|
-> , `h_31` tinyint unsigned null
|
-> , `h_4` tinyint unsigned null
|
-> , `h_5` tinyint unsigned null
|
-> , `h_6` tinyint unsigned null
|
-> , `h_7` tinyint unsigned null
|
-> , `h_8` tinyint unsigned null
|
-> , `h_9` tinyint unsigned null
|
-> , primary key (element_id, daytime)) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=dynamic;
|
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.
|
MariaDB [test]> select version();
|
+----------------+
|
| version() |
|
+----------------+
|
| 10.3.9-MariaDB |
|
+----------------+
|
1 row in set (0.000 sec)
|
Test is taken from upstream https://bugs.mysql.com/bug.php?id=77398 (https://bugs.mysql.com/file.php?id=26301&bug_id=77398).
That " BLOB prefix of 0 bytes" statement is just wrong, and message otherwise does not help to find what column starts to cause the problem.
There is a statement in https://bugs.mysql.com/bug.php?id=69336 that error message is fixed and made useful since 5.7.5. This does NOT seem to be the case neither in 5.7.22, nor in 8.0.12:
...
|
-> , `h_6` tinyint unsigned null
|
-> , `h_7` tinyint unsigned null
|
-> , `h_8` tinyint unsigned null
|
-> , `h_9` tinyint unsigned null
|
, primary key (element_id, daytime)) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT= -> , primary key (element_id, daytime)) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=dynamic;
|
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.
|
mysql> select version();
|
+-----------+
|
| version() |
|
+-----------+
|
| 8.0.12 |
|
+-----------+
|
1 row in set (0,00 sec)
|
We need this fixed in 10.2+, to help users change their schema to meet expected limitations .
See MDEV-13111 also on impact of innodb_strict_mode on this.
Attachments
Issue Links
- relates to
-
MDEV-20194 Warnings inconsistently issued upon CHECK on table from older versions
- Closed
-
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
-
MDEV-20400 Implement a way to query an InnoDB table's max row size
- Open
-
MDEV-20832 Don't print "row size too large" warnings in error log if innodb_strict_mode=OFF and log_warnings<=2
- Closed
-
MDEV-10364 Row size too large (> 8126)
- Closed
-
MDEV-19292 "Row size too large" error when creating table with lots columns when row format is DYNAMIC or COMPRESSED
- Closed
-
MDEV-20256 "Row size too large" on latest release (10.3.17)
- Closed
-
MDEV-20786 MariaDB server writes warnings into errorlog although 'log_warnings=0'
- Closed
-
MDEV-20949 Stop performing unnecessary maximum row size check for DML
- Closed
-
MDEV-22585 Incorrect note being written to the error log when CREATE and ALTER fail due to Row Size Too Large and in all cases for TRUNCATE and OPTIMIZE TABLE.
- Open
-
MDEV-23521 Implement an InnoDB row format that can use overflow pages for smaller columns
- Open