MYSQL - 1118 Row size too large

Sprint

Erfahrenes Mitglied
Hallo zusammen,

heute habe ich von meiner Datenbank diesen Fehler bekommen. Das aber nicht bei einer Änderung an der Tabelle oder den einzutragenden Werten, sondern einfach so mittendrin. Ich habe dann Mr. Google bemüht, habe aber nicht wirklich eine klare Lösung gefunden. Das meiste war "Ich hab das probiert" und "ich habe jenes probiert".

Bei mir hat jetzt zwar geholfen, die Tabelle von InnoDB auf MyISAM umzustellen, aber ich weiß nicht, ob das jetzt gut ist oder ob der Fehler wiederkommen kann. Noch ist das ganze in der Entwicklung, aber später in der Produktion wäre sowas natürlich fatal.

Es war auch der Hinweis dabei, ein paar Felder auf TEXT oder BLOB umzustellen, aber alle Felder sind entweder Integer oder Text. Das kann es also auch nicht sein. Und auch die Texte sind nicht sonderlich groß. Im Moment sind es pro Textfeld vielleicht 50 - 100 Zeichen.

Auch bei einer anderen Datenbank, die sich schon seit Jahren im Einsatz befindet und die teilweise deutlich größere Einträge hat, kam das noch nie vor.

Kennt jemand eine "Checkliste", mit der man die verschiedenen Ursachen für diesen Fehler mal prüfen kann?
 
Hi

Bei mir hat jetzt zwar geholfen, die Tabelle von InnoDB auf MyISAM umzustellen, aber ich weiß nicht, ob das jetzt gut ist
Hängt davon ab, wie die DB verwendet wird. MyISAM kann zB. keine Transaktionen, generell kein Concurrencyzeug, keine cascading Änderungen, max. 2^32 Zeilen usw.

Generell gibt es Limits, wie viel Byte eine Zeile haben darf, wobei dynamisch lange Felder wie Text separat gespeichert werden. Je nach verschiedenen Einstellungen werden aber zB. die ersten 768 Byte pro Text-Spalte doch in der Zeile selber gespeichert, weil schneller usw. ...

Möglichkeit, mit der man das Problem sicher nie wieder hat: Nicht viele Textspalten "nebeneinander", sondern eine Art Key-Value-Tabelle: ID (Keyteil), NameDesWertes (Keyteil), Wert

Sonst wäre das neure "Barracuda"-Speicherformat für InnoDB eine Option, weil es deutlich weniger als 768 Byte pro Text in der Zeile hat.
 
Zuletzt bearbeitet:
Hi sheel, danke für die Erläuterung. Mit dem MyISAM Einschränkungen könnte ich leben.

Ich habe jetzt aber mal bei unserem Provider nachgefragt, ob bei Bedarf eine Umstellung auf Barracuda möglich wäre. Ansonsten beschäftige ich mich aber in Gedanken schon mit einem Umbau ins Key-Value Format.
 

Neue Beiträge

Zurück