Nachdem ich den Datentyp einer MySql-Spalte geändert habe, um Twilio-Anruf- IDs (34 Zeichenfolgen) zu speichern , versuche ich, die Daten in dieser Spalte manuell zu ändern mit:
update calls
set incoming_Cid='CA9321a83241035b4c3d3e7a4f7aa6970d'
where id='1';
Ich erhalte jedoch eine Fehlermeldung, die keinen Sinn ergibt, da der Datentyp der Spalte ordnungsgemäß geändert wurde.
| Level ||| Code | Message
| Warning | 1265 | Data truncated for column 'incoming_Cid' at row 1
ALTER TABLES calls MODIFY incoming_Cid STRING;
ist was ich getan habe.STRING
ist kein MySQL-Typ. Was ist Ihre Datenbank-Engine?Antworten:
Ihr Problem ist, dass Ihre
incoming_Cid
Spalte im Moment so definiert ist, wieCHAR(1)
sie sein sollteCHAR(34)
.Um dies zu beheben, geben Sie einfach diesen Befehl ein, um die Länge Ihrer Spalten von 1 auf 34 zu ändern
Hier ist die SQLFiddle- Demo
quelle
Ich hatte das gleiche Problem aufgrund einer Tabellenspalte, die als ENUM ('x', 'y', 'z') definiert war, und später versuchte ich, den Wert 'a' in dieser Spalte zu speichern, daher erhielt ich die erwähnte Error.
Gelöst durch Ändern der Tabellenspaltendefinition und des Mehrwerts 'a' in der Aufzählungsmenge.
quelle
Mit dieser Erklärung:
... Sie haben den Längenparameter weggelassen. Ihre Anfrage war daher gleichbedeutend mit:
Sie müssen die Feldgröße für Größen größer als 1 angeben:
quelle
Sie können diese Meldung häufig erhalten, wenn Sie Folgendes tun:
In unserem Fall ergab sich folgender Fehler:
Das Problem stellte sich als Spaltenfehlausrichtung heraus, die dazu führte, dass
tinyint
versucht wurde, in einemdatetime
Feld gespeichert zu werden oder umgekehrt.quelle
In meinem Fall war es eine Tabelle mit einer ENUM, die die Wochentage als Ganzzahlen (0 bis 6) akzeptiert. Beim Einfügen des Werts 0 als Ganzzahl wurde die Fehlermeldung "Daten für Spalte abgeschnitten ..." angezeigt. Um dies zu beheben, musste die Ganzzahl in eine Zeichenfolge umgewandelt werden. Also statt:
$item->day = 0;
Ich musste es tun;
$item->day = (string) 0;
Es sieht albern aus, die Null so zu werfen, aber in meinem Fall war es in einer Laravel-Fabrik, und ich musste es so schreiben:
quelle
Als ich zum ersten Mal versuchte, CSV in MySQL zu importieren, bekam ich den gleichen Fehler und dann stellte ich fest, dass die von mir erstellte MySQL-Tabelle nicht die Zeichenlänge des importierenden CSV-Felds hat. Wenn es also das erste Mal ist, dass CSV importiert wird
varchar
odertext
, nicht mischenint
oder andere Werte.dann bist du gut zu gehen.
quelle
Ich hatte das gleiche Problem mit einem Datenbankfeld vom Typ "SET", das ein Aufzählungstyp ist.
Ich habe versucht, einen Wert hinzuzufügen, der nicht in dieser Liste enthalten ist.
Der Wert, den ich hinzufügen wollte, hatte den Dezimalwert 256, aber die Aufzählungsliste hatte nur 8 Werte.
Also musste ich dem Feld nur den zusätzlichen Wert hinzufügen.
Das Lesen dieses Dokumentationseintrags hat mir geholfen, das Problem zu verstehen.
quelle