I've got a 700MB dump file from a mysql database that I was trying to undump into a new install of MariaDB and I got this error
ERROR 1118 (42000) at line 7481: 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.
I got most of the tables to go through, but the table that doesn't want to pump through is kind of a strange one. It's got about 10 blob fields in it (none of which should be over 1000 bytes each because of what they're supposed to be used for in my program). The only other datatypes we've got are VARCHAR
, CHAR
, SMALLINT
and INTEGER
.
What I want to achieve is an automated way to convert MySQL to MariaDB so my customers can do the same thing. So, even if I fix this problem, I'd like to know exactly what the problem is and if I can fix it on the MariaDB installation or the MySQL dumping.
Our customers use MyISAM tables because of a few outlying cases we can work around (in case that makes a difference). Seems like MariaDB created all these tables as InnoDB tables.
The syntax I used for creating the dump file was just mysqldump.exe DatabaseName --compatible=mssql > DatabaseName.sql
. I don't think the mssql
compatibility causes issues, it was just a holdover I found in the batch file.
Best Answer
InnoDB has Limitations on row lengths and BLOBs. According to the MySQL Documentation:
You are going to have to recreate the mysqldump so that the Storage Engine is Specified. Perhaps just drop the
--compatible=mssql
from the mysqldump command. The end result is the that the table will remain a MyISAM table when being imported into MariaDB.This is just a guess but look at the error message you posted. If a BLOB prefix is 768 bytes and you have 10 BLOBs, that 7680 bytes. That leaves you with 320 bytes. If the remaining datatypes exceed 320 bytes, then it is impossible to convert to InnoDB.
Since a TEXT column is the variant of a BLOB, converting to TEXT does nothing since the storage requirements for TEXT and BLOB field are identical.