Ich arbeite mit einer ziemlich einfachen Datenbank, aus einer Java-Anwendung. Wir versuchen, etwa 200.000 Text gleichzeitig mit dem Standard-JDBC-MySQL-Adapter einzufügen. Wir erhalten intermittierend eine com.mysql.jdbc.MysqlDataTruncation: Daten abgeschnitten: Daten zu lang für Spaltenfehler.MySQL Data Truncation Fehler
Der Spaltentyp ist longtext und die Sortierfolge der Datenbank ist UTF-8. Der Fehler tritt auf, wenn sowohl MyISAM- als auch InnoDB-Tabellen-Engines verwendet werden. Die maximale Paketgröße wurde sowohl auf Client- als auch auf Serverseite auf 1 GB festgelegt, sodass auch dies kein Problem verursachen sollte.
Wie kann ich überprüfen, ob meine UTF-8-Daten alle 3-Byte-Unicode? – JAVAGeek
@JAVAGeek: Gute Frage, die wohl getrennt gestellt werden sollte. Es gibt verschiedene Möglichkeiten. Eine Möglichkeit, die in Java funktionieren könnte, besteht darin, zu überprüfen, ob in der Zeichenfolge Codepunkte vorhanden sind, die durch mehr als ein Zeichen repräsentiert werden, wie zum Beispiel: 's.length() == s.toCharArray () .Länge'. Wenn dies der Fall ist, hat "s" die gleiche Anzahl an Codepunkten und Zeichen, so dass nur BMP-Zeichen verwendet werden, die in UTF-8 mit bis zu 3 Bytes dargestellt werden. – Avi