I know that this question has been asked (and answered) many times, but none of them appear to be the same problem that I am seeing...
The table that is giving me problems only has two columns: the first field is an integer, the second field is longtext. Here is a portion of a dump file from MySQL 5.5.30:
1 - MySQL dump 10.13 Distrib 5.5.30, for Linux (x86_64)
2 --
3 -- Host: localhost Database: mydatabasename
4 -- ------------------------------------------------------
5 -- Server version 5.5.30-log
32 DROP TABLE IF EXISTS `large_file`;
33 /*!40101 SET @saved_cs_client = @@character_set_client */;
34 /*!40101 SET character_set_client = utf8 */;
35 CREATE TABLE `large_file` (
36 `id` int(11) NOT NULL AUTO_INCREMENT,
37 `data` longtext,
38 PRIMARY KEY (`id`)
39 ) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=latin1;
40 /*!40101 SET character_set_client = @saved_cs_client */;
43 -- Dumping data for table `large_file`
44 --
45
46 LOCK TABLES `large_file` WRITE;
47 /*!40000 ALTER TABLE `large_file` DISABLE KEYS */;
48 INSERT INTO `large_file` VALUES(38,'GyUtMTIzNDVYQ... <large data> ...);
49 /*!40000 ALTER TABLE `large_file` ENABLE KEYS */;
50 UNLOCK TABLES;
As you can see this dump file came from MySQL 5.5.30, and I can import this data into 5.5.30. But, when I try to import into 5.6.x, I get the ERROR 1118 (42000) Row size too large error.
The data going into the large_file table, is (relatively) large, values range in size from 15 MB to about 25 MB. The data is all ASCII (base 64 encoded).
Other posters have had issues with very large number of columns, but I only have two columns in this table.
The longtext type should be capable of storing approx 4 GB, and this has been the case with 5.5.30, but I am finding migration to 5.6.x to be difficult.
Can anyone offer insight into why this is happening? Or, how I can work around it?
Thanks in advance!
Therefore, a potential solution to the Row size too large error is to convert the table to use the DYNAMIC row format. For example: ALTER TABLE tab ROW_FORMAT=DYNAMIC; You can use the INNODB_SYS_TABLES table in the information_schema database to find all tables that use the REDUNDANT or the COMPACT row formats.
How to fix row size too large(> 8126 in MySQL? 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.
the row size is 8135 which is greater than maximum allowed size (8126)
Check that the innodb_log_file_size setting is sufficiently large -- 10 times the largest BLOB data size found in the rows in the table plus the length of other variable length fields.
The following is from MySQL 5.6 Release Notes
InnoDB Notes
Important Change: Redo log writes for large, externally stored BLOB fields could overwrite the most recent checkpoint. The 5.6.20 patch limits the size of redo log BLOB writes to 10% of the redo log file size. The 5.7.5 patch addresses the bug without imposing a limitation. For MySQL 5.5, the bug remains a known limitation.
As a result of the redo log BLOB write limit introduced for MySQL 5.6, innodb_log_file_size should be set to a value greater than 10 times the largest BLOB data size found in the rows of your tables plus the length of other variable length fields (VARCHAR, VARBINARY, and TEXT type fields). Failing to do so could result in “Row size too large” errors. No action is required if your innodb_log_file_size setting is already sufficiently large or your tables contain no BLOB data. (Bug #16963396, Bug #19030353, Bug #69477)
I had this issue with MYSQL 5.7 (OSX 10.11).
The following worked although it may not be ideal.
In my.cfn
add:
innodb_strict_mode = 0
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With