2017-10-13 4 views
2

DBS 혼자 MySQL 버젼 스탠드에 포트에 있습니다 5.0.18는 Windows7 64 비트에서 실행하고 나는 붙어하고 문제가있어. 여기데이터 너무 오래는

ERROR 1406 (22001): Data too long for column 'nam' at row 1 

MCVE의 SQL 스크립트 :

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`; 

그리고 여기 출력 :

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) 

내가 varchar에 어떤 국가/유니 코드 문자를 삽입하려고하면 나는 오류가 발생했습니다 보시다시피, 국가 별 문자 čE8h이 없습니다.

하지만 그들은을 위해 그 일의에서이 문제를 (해결책을 해결하지 않습니다

나는 이러한 품질 관리을 알고있다 이).

이 문제는 단일 문자 열에 대해서도 존재합니다. 크기는 상관없이 VARCHAR입니다. 이제 유일한 해결책은 국가 별 문자를 ASCII으로 변경하는 것입니다.하지만 그렇게하지 않으면 정보를 잃어 버릴 수 있습니다.

아무런 효과없이 다양한 문자 세트 utf8, ucs2, latin1을 사용해 보았습니다.

나는 다른 답변의 일부로 제안한 STRICT_TRANS_TABLES을 삭제하려고했지만 그 중 하나에도 영향을 미치지 않으며 문자열 크기는 필요한 것보다 몇 배 더 큽니다.

누구에게도 단서가 있습니까?

@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 

쿼리는 콘솔 내부에서 수행되는이 cmd를 같이 시작 :이 MySQL의 서버 (설치되지 않은)가 cmd를이 시작되는 독립 것을 사실 함께 할 수있는 뭔가가있을 수 있습니다 :

@echo off 
    bin\mysql.exe -uroot -h127.0.0.1 -P3306 
rem bin\mysql.exe -uroot -proot -h127.0.0.1 -P3306 
+1

당신은 업그레이드해야이 다른 문제가 그러나 나는 새로운 질문을하기로 결정! 5.0.18은 거의 12 세입니다. 5.1, 5.5, 5.6, 5.7 및 8.0에서 비 ASCII 문자 처리가 변경되었습니다. 이번에는 총알을 피한 자답을 보았습니다. –

답변