Ich habe in dem Hafen einige DBS in Stand-alone-MySQL Version: 5.0.18 läuft auf Windows7 64bit und ich habe ein Problem, das ich mit steckte. Wenn ich versuche, jede nationale/Unicode-Zeichen in varchar
einzufügen habe ich Fehler:Daten zu langen Spalte Fehler mit nationalen Zeichen
ERROR 1406 (22001): Data too long for column 'nam' at row 1
Hier MCVE SQL-Skript:
SET NAMES utf8;
DROP TABLE IF EXISTS `tab`;
CREATE TABLE `tab` (`ix` INT default 0,`nam` VARCHAR(1024) default '') DEFAULT CHARSET=utf8;
INSERT INTO `tab` VALUES (1,'motorček');
INSERT INTO `tab` VALUES (2,'motorcek');
SELECT * FROM `tab`;
Und hier Ausgang:
mysql> SET NAMES utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> DROP TABLE IF EXISTS `tab`;
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE TABLE `tab` (`ix` INT default 0,`nam` VARCHAR(1024) default '') DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO `tab` VALUES (1,'motorček');
ERROR 1406 (22001): Data too long for column 'nam' at row 1
mysql> INSERT INTO `tab` VALUES (2,'motorcek');
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM `tab`;
+------+----------+
| ix | nam |
+------+----------+
| 2 | motorcek |
+------+----------+
1 row in set (0.00 sec)
Wie Sie den Eintrag mit nationalen Zeichen č
sehen können 210 fehlt.
Ich bin mir bewusst, dieser QAs:
- How to make MySQL handle UTF-8 properly
- “Data too long for column” - why?
- Error Code: 1406. Data too long for column - MySQL
aber sie befassen sich nicht mit diesem Problem (keine Lösung aus diesen Arbeiten für Dies).
Dieses Problem ist auch für einzelne Zeichenfolgen vorhanden. Egal die Größe von VARCHAR
. Also die einzige Lösung für jetzt ist, ändern Sie die nationalen Zeichen in ASCII aber das würde Informationen verlieren, die ich lieber vermeiden würde.
Ich habe versucht, verschiedene Zeichensätze utf8, ucs2, latin1
ohne Wirkung zu verwenden.
Ich habe versucht, die STRICT_TRANS_TABLES
fallen lassen, wie einige der anderen Antworten vorschlagen, aber das hat auch keinen Effekt mit diesem (und die String-Größe ist viel größer als nötig).
Hat jemand irgendwelche Hinweise?Vielleicht ist es etwas mit der Tat zu tun hat, dass diese MySQL Server Standalone ist (es nicht installiert ist) es mit diesem cmd gestartet:
@echo off
bin\mysqld --defaults-file=bin\my.ini --standalone --console --wait_timeout=2147483 --interactive_timeout=2147483
if errorlevel 1 goto error
goto finish
:error
echo.
echo MySQL could not be started
pause
:finish
und Abfragen sind fertig innerhalb Konsole ähnliche cmd gestartet:
@echo off
bin\mysql.exe -uroot -h127.0.0.1 -P3306
rem bin\mysql.exe -uroot -proot -h127.0.0.1 -P3306
sollten Sie aktualisieren! 5.0.18 ist fast 12 Jahre alt. 5.1, 5.5, 5.6, 5.7 und 8.0 haben Änderungen an der Handhabung von nicht-ASCII-Zeichen vorgenommen. Ich sehe aus deiner Selbstantwort, dass du dieses Mal der Kugel ausgewichen bist. –