2011-08-03 3 views

답변

3

기본적으로 열을 변경할 수 있으며 새 길이보다 긴 문자열을 잘라내어 경고를 생성합니다.

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 
+0

이 훌륭한 설명을 보내 주셔서 감사합니다. @Bill. 내 머리 속의 모든 문제가 해결되었습니다. :-) – Aufwind

+0

나를 위해 일해 : 쿼리 OK, 2919470 행 영향, 27062 경고 (45 분 41.31 초) –