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.

2 Gedanken zu „MySQL database import fails: ERROR 1118 (42000)“

  1. Will man das wirklich? MyISAM kann keine referenzielle Integrität. MyISAM kann kein row locking. Nein, man will MyISAM nicht mehr. MariaDB 10.0 hat den oben beschriebenen Bug nicht.

    • Hallo Jens, stehe da voll und ganz bei dir.
      War aber an dem Server nicht möglich und in dem Fall die einzige Lösung.
      Und immer wenn ich eine Frage mehr als einmal gestellt bekam schrieb ich sie in das Blog.
      Ich hatte selbst vor am Ende zu schreiben, dass dies der dreckige Weg ist.

      ps: Lustiger weise ist dort ein 16.04.7 LTS mit MariaDB 10.0.38 am laufen. Warum auch immer. Es fällt dort so auf die Nase.
      IMO wäre in Upgrade und eine andere Installation besser

Kommentare sind geschlossen.