Fix: Daten werden wegen eines Spaltenfehlers in MySQL abgeschnitten
Dieser Artikel zeigt die möglichen Gründe und Lösungen für einen Fehler, der besagt, dass Daten für eine Spalte abgeschnitten werden
in MySQL.
Beheben Sie den Fehler Daten werden für eine Spalte abgeschnitten
in MySQL
Hier werden wir die möglichen Gründe und Lösungen untersuchen, um einen Fehler zu beseitigen, der besagt, dass MySQL Daten für eine Spalte abgeschnitten
sind.
Daten sind zu groß
Es gibt einige Szenarien, in denen wir die Daten aus einer Datei laden müssen, anstatt sie manuell in die MySQL-Tabelle einzufügen. Während des Ladens kann der Fehler Daten für eine Spalte 'columnName' in Zeile # abgeschnitten
auftreten. Warum?
Dies liegt daran, dass die angegebenen Daten für einen Datentyp der Spalte in der MySQL-Tabelle zu groß erscheinen. Sie haben beispielsweise eine Tabelle, in der ein Wert
-Attribut vom Typ text
ist, das nur 65.000 Zeichen der bereitgestellten Daten aufnehmen kann.
Sie erhalten diesen Fehler, wenn Sie Daten für die Spalte Wert
einfügen, die 65 KB überschreiten.
Um dieses Problem zu lösen, müssen Sie den Typ ändern, der mehr Daten aufnehmen kann, z. B. MEDIUMTEXT
oder LONGTEXT
, der 16 MB und 4 GB aufnehmen kann. Einige Optimierungstipps finden Sie auch hier.
Wir können die Daten auch mit SET ANSI_WARNINGS OFF
abschneiden und die Datensätze unter Berücksichtigung der maximalen Länge des Datentyps der Spalte wieder einfügen.
Es werden ungültige Daten übergeben
Der Error Code: 1265. Data truncated for column 'a' at row 1
tritt auch in MySQL auf, wenn wir versuchen, ungültige Daten einzufügen.
Zum Beispiel haben wir eine Tabelle, in der das Feld Preis
vom Typ float
ist und die NULL
-Werte akzeptiert. Siehe Folgendes:
#create a table named `prices`
CREATE TABLE prices (ID INT NOT NULL, price FLOAT NULL);
#insert the first record
INSERT prices VALUES (1, '');
Hier fügen wir eine leere Zeichenfolge in die Spalte Preis
ein, einen float
-Typ, der NULL
-Werte akzeptiert. Denken Sie daran, dass NULL
und ''
nicht dasselbe sind.
Wenn wir jedoch versuchen, eine leere Zeichenfolge in eine Spalte einzufügen, die NULL
-Werte enthält, würde dies den Error Code: 1265. Data truncated for column 'a' at row 1
generieren. Die einfachste Lösung für dieses Problem besteht darin, den korrekten Wert des richtigen Datentyps zu übergeben, wie es die jeweilige Spalte der Tabelle Preis
erfordert.
Wir können es lösen, indem wir explizit die NULL
-Werte anstelle eines leeren Strings (''
) angeben oder die Werte für diese bestimmte Spalte nicht einmal in die INSERT
-Anweisung schreiben. Sehen Sie sich das folgende Snippet unter Berücksichtigung unseres Beispiels an.
INSERT prices VALUES (1, NULL); #insert null explicitly
INSERT prices (ID) VALUES (2); #don't specify values for `price` column
Falsches Abschlusszeichen
Wenn wir jede Zeile manuell in die MySQL-Tabelle einfügen, geht alles gut. Der Fehler tritt auf, wenn wir versuchen, mehr als eine Zeile gleichzeitig zu laden und das abschließende Zeichen nicht richtig erhalten.
Um dies zu lösen, müssen wir das Abschlusszeichen der Datei überprüfen und im LOAD
-Befehl wie folgt angeben.
#if the terminating character is `tab`
FIELDS TERMINATED BY '\t'
#if the terminating character is a `comma`
FIELDS TERMINATED BY ','