Artikel

MySQL database import fails: ERROR 1118 (42000)

ERROR 1118 (42000) at line 8900: 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.

The „Row size too large (> 8126)“ error is not a bug. „This behavior is expected because inoodb design requires the record to fit in the B-tree leaf page and if unsuccessful we return error. During the creation of BLOB or TEXT field we allocate 41 Bytes (dynamic or compressed row format) for the field which is considered for row size calculation. During insertion if the BLOB or TEXT is less than 40 Bytes we store it internally with in these 41 bytes and if it is more than 40 bytes, we store it off page and store 20 Bytes reference to the page.“

Daniel Price Bug #69336
„Row size too large“ error thrown even when it’s not.

Die Lösung

Hierzu in der Datei my.cnf im Abschnitt [mysqld] folgenden Konfigurationsparameter hinzufügen:

innodb_strict= 0
default_storage_engine=MyISAM

Datenbankserver neu starten und den dump der SQLDatei importieren.
Falls immer noch ein Fehler auftritt, eine Kopie der SQLDatei erstellen und

sed -i 's/ENGINE=InnoDB/ENGINE=MyISAM/g' SQLFILE

ausführen und die Datei importieren.
Nach dem Import die Konfigurationsparameter in der Datei my.cnf wieder entfernen und den Datenbankserver neu starten.