Ich habe ein Problem mit MySQL, ich habe eine Tabelle mit vielen Textfeldern. Wenn ich versuche, einige Daten zu speichern, erhalte ich diesen Fehler.
Zeilengröße zu groß. Die maximale Zeilengröße für den verwendeten Tabellentyp ohne BLOBs beträgt 8126. Sie müssen einige Spalten in TEXT oder BLOBs ändern
Der Text, den ich in jedem Feld speichere, ist nicht zu lang, nur ein paar Absätze in jedem.
Was kann ich machen?
Vielleicht möchten Sie sich diesen Artikel ansehen, in dem viel über die MySQL-Zeilengrößen erklärt wird. Es ist wichtig zu beachten, dass selbst wenn Sie TEXT- oder BLOB-Felder verwenden, Ihre Zeilengröße immer noch über 8 KB liegen kann (Limit für InnoDB), da die ersten 768 Bytes für jedes Feld inline auf der Seite gespeichert werden. Der einfachste Weg, dies zu beheben, ist die Verwendung des Barracuda-Dateiformats mit InnoDB. Dies beseitigt das Problem im Grunde genommen insgesamt, indem nur der 20-Byte-Zeiger auf die Textdaten gespeichert wird, anstatt die ersten 768 Bytes zu speichern.
quelle
Nun, machen Sie, was MySQL sagt: Konvertieren Sie große Felder von Varchar in Text oder Blob (ALTER TABLE). Textfelder verhalten sich ähnlich wie varchar (Indizes benötigen eine Präfixlänge, funktionieren aber trotzdem), werden jedoch separat gespeichert.
Diese Referenz gibt Ihnen die genauen Grenzen jeder Standard-MySQL-Tabellen-Engine an:
http://dev.mysql.com/doc/refman/5.0/en/column-count-limit.html
Und hier ist alles, was Sie über Textfelder wissen sollten:
http://dev.mysql.com/doc/refman/5.0/en/blob.html
quelle
Meistens Cross-Posting von Stack Overflow , aber dies ist ein offener (und verifizierter) Fehler in der InnoDB-Engine des MySQL-Servers . Eine vorübergehende Lösung besteht derzeit darin, auf die MyISAM- Engine als temporären Speicher zurückzugreifen. Also, in Ihrer my.cnf-Datei:
quelle