2017-06-21 7 views
2

Meine Importabfrage führt nicht durch, weil ein bestimmtes chinesisches Sonderzeichen in meinem Datenabbild den Befehl beeinträchtigt. Es heißt "# 1366 - Falscher String-Wert: '\ xDA ????? ...' für Spalte 'Beschreibung' in Zeile 1"varchar-Datentyp akzeptiert Zeichen aus Datenspeicher nicht

Das Beschreibungsfeld ist derzeit ein Varchar-Typ mit einer Länge von (5000) . Was denkst du, verursacht dieses Problem? Gibt es vielleicht ein Problem mit dem Inhalt des Dumps? Gibt es Sonderzeichen, die mit diesem Varchar-Datentyp nicht kompatibel sind? Gibt es Workarounds oder beheben Sie dies?

+0

Es gibt irgendwo eine falsche Kodierung: Die Datei hat nicht die Kodierung, die Sie denken, Ihre Verbindung wurde nicht mit der korrekten Kodierung hergestellt, Tabelle/Spalte ist auf eine falsche Kodierung eingestellt ... Da erwähnen Sie nicht was Ihre Kodierung, die Sie verwenden sollen, vielleicht führen Sie den Import nur mit den Standardwerten aus, die alles hat. –

+0

Die Datei ist eine XLS-Datei, die ich als CSV gespeichert habe. dann habe ich mit phpmyadmin console importiert. Daher verwende ich die Standardcodierung, denke ich. Ich habe versucht, nvarchar verwenden, aber es gibt keine Option für das .. Ich habe versucht, die "Kollation" oder die Codierung für dieses Feld zu utf8mb4, aber ich bin nicht sicher, ob das funktionieren wird. –

+0

Ein einfacher Weg, das Problem mit der Kodierung zu lösen, ist das Öffnen der Datei mit dem HxD-Editor o.ä. und das manuelle Löschen des BOM-Zeichens, wenn es sich um eine einmalige Sache handelt. Andernfalls müssen Sie erklären, welche Kodierung Sie verwenden. – MiloBellano

Antwort

0

Nur ein Update auf das Problem. Ich konnte es tatsächlich beheben, indem ich nur den Standard-Editor verwendete, um die Zeichencodierung der CSV-Datei in utf8 zu konvertieren. Ich änderte auch die Standardwerte für Tabelle und Datenbank auf utf8. Danach haben sich nur geringfügige Änderungen an den Datentypenlängen ergeben und ich konnte die Daten komplett importieren. Vielen Dank für Ihre Vorschläge.

1

Sie sollten nvarchar anstelle von varchar verwenden und sicherstellen, dass Ihre Eingabedaten dieselbe Codierung wie Ihre Datenbank haben.

EDIT: Gerade bemerkte das mysql-Tag; Sie sollten in Ihrer Spaltendeklaration "Zeichensatz utf8" verwenden.

+0

In MySQL 'NVARCHAR' ist angeblich ein Alias ​​für' VARCHAR' mit 'utf8' Codierung (gerade gestern gelernt, ich habe es nicht wirklich versucht). –

+0

Ich versuchte es mit phpmyadmin, aber es scheint, dass die Nvarchar-Option nicht verfügbar ist. –

Verwandte Themen