mirror of
https://github.com/MariaDB/server.git
synced 2025-12-01 17:39:21 +03:00
Bug #13453036 ERROR CODE 1118: ROW SIZE TOO LARGE - EVEN
THOUGH IT IS NOT. The following error message is misleading because it claims that the BLOB space is not counted. "ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. You have to change some columns to TEXT or BLOBs" When the ROW_FORMAT=compact or ROW_FORMAT=REDUNDANT is used, the BLOB prefix is stored inline along with the row. So the above error message is changed as follows depending on the row format used: For ROW_FORMAT=COMPRESSED or ROW_FORMAT=DYNAMIC, the error message is as follows: "ERROR 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." For ROW_FORMAT=COMPACT or ROW_FORMAT=REDUNDANT, the error message is as follows: "ERROR 42000: Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline." rb://1252 approved by Marko Makela
This commit is contained in:
@@ -877,11 +877,23 @@ convert_error_code_to_mysql(
|
||||
case DB_TABLE_NOT_FOUND:
|
||||
return(HA_ERR_NO_SUCH_TABLE);
|
||||
|
||||
case DB_TOO_BIG_RECORD:
|
||||
my_error(ER_TOO_BIG_ROWSIZE, MYF(0),
|
||||
page_get_free_space_of_empty(flags
|
||||
& DICT_TF_COMPACT) / 2);
|
||||
case DB_TOO_BIG_RECORD: {
|
||||
/* If prefix is true then a 768-byte prefix is stored
|
||||
locally for BLOB fields. Refer to dict_table_get_format() */
|
||||
bool prefix = ((flags & DICT_TF_FORMAT_MASK)
|
||||
>> DICT_TF_FORMAT_SHIFT) < UNIV_FORMAT_B;
|
||||
my_printf_error(ER_TOO_BIG_ROWSIZE,
|
||||
"Row size too large (> %lu). Changing some columns "
|
||||
"to TEXT or BLOB %smay help. In current row "
|
||||
"format, BLOB prefix of %d bytes is stored inline.",
|
||||
MYF(0),
|
||||
page_get_free_space_of_empty(flags &
|
||||
DICT_TF_COMPACT) / 2,
|
||||
prefix ? "or using ROW_FORMAT=DYNAMIC "
|
||||
"or ROW_FORMAT=COMPRESSED ": "",
|
||||
prefix ? DICT_MAX_INDEX_COL_LEN : 0);
|
||||
return(HA_ERR_TO_BIG_ROW);
|
||||
}
|
||||
|
||||
case DB_NO_SAVEPOINT:
|
||||
return(HA_ERR_NO_SAVEPOINT);
|
||||
|
||||
Reference in New Issue
Block a user