3
분명히 멍청한 질문이지만, 나는 다음과 같이 물어볼 필요가있다. :-) 타입 varchar와 길이 255의 컬럼을 가정하고,이 칼럼의 열에 저장된 가장 긴 문자열은 길이가 200이다. 200 이하로? 문자열이 모두 "잘릴"것입니까?불법적으로 길이가 줄인 경우 varchar로 정의 된 열의 내용이 내부 내용에 어떻게됩니까?
분명히 멍청한 질문이지만, 나는 다음과 같이 물어볼 필요가있다. :-) 타입 varchar와 길이 255의 컬럼을 가정하고,이 칼럼의 열에 저장된 가장 긴 문자열은 길이가 200이다. 200 이하로? 문자열이 모두 "잘릴"것입니까?불법적으로 길이가 줄인 경우 varchar로 정의 된 열의 내용이 내부 내용에 어떻게됩니까?
기본적으로 열을 변경할 수 있으며 새 길이보다 긴 문자열을 잘라내어 경고를 생성합니다.
mysql> create table t (v varchar(20));
Query OK, 0 rows affected (0.06 sec)
mysql> insert into t values ('123456789');
Query OK, 1 row affected (0.00 sec)
mysql> alter table t modify column v varchar(10);
Query OK, 1 row affected, 1 warning (0.04 sec)
Records: 1 Duplicates: 0 Warnings: 1
mysql> show warnings;
+---------+------+----------------------------------------+
| Level | Code | Message |
+---------+------+----------------------------------------+
| Warning | 1265 | Data truncated for column 'v' at row 1 |
+---------+------+----------------------------------------+
1 row in set (0.00 sec)
mysql> select * from t;
+------------+
| v |
+------------+
| 1234567890 |
+------------+
1 row in set (0.00 sec)
당신이 SQL modeSTRICT_ALL_TABLES
또는 STRICT_TRANS_TABLES
세트가있는 경우, 경고 오류가되고 ALTER 실패합니다.
mysql> alter table t modify column v varchar(10);
ERROR 1265 (01000): Data truncated for column 'v' at row 1
이 훌륭한 설명을 보내 주셔서 감사합니다. @Bill. 내 머리 속의 모든 문제가 해결되었습니다. :-) – Aufwind
나를 위해 일해 : 쿼리 OK, 2919470 행 영향, 27062 경고 (45 분 41.31 초) –