문서 에서 내 추측 은 길이 제한을 늘리면 varchar
열을 추가하는 것과 같은 문제가 발생하지 않는다는 것입니다.
일부 조작의 경우 임시 테이블이 필요하지 않은 내부 ALTER TABLE이 가능합니다.
그러나 이것은 이것에 대한 의견에서 모순되는 것처럼 보입니다. SO 질문 .
편집하다
적어도 5.0에서 길이를 늘리려면 실제로 임시 테이블 (또는 다른 고가의 다른 작업)이 필요하다는 것을 확인할 수 있다고 생각합니다.
테스트 베드 :
create table my_table (id int auto_increment primary key, varchar_val varchar(10));
insert into my_table (varchar_val)
select 'HELLO'
from (select 0 union all select 1 union all select 3 union all select 4 union all select 5 union all select 6 union all select 6 union all select 7 union all select 8 union all select 9) s1,
(select 0 union all select 1 union all select 3 union all select 4 union all select 5 union all select 6 union all select 6 union all select 7 union all select 8 union all select 9) s2,
(select 0 union all select 1 union all select 3 union all select 4 union all select 5 union all select 6 union all select 6 union all select 7 union all select 8 union all select 9) s3,
(select 0 union all select 1 union all select 3 union all select 4 union all select 5 union all select 6 union all select 6 union all select 7 union all select 8 union all select 9) s4,
(select 0 union all select 1 union all select 3 union all select 4 union all select 5 union all select 6 union all select 6 union all select 7 union all select 8 union all select 9) s5,
(select 0 union all select 1 union all select 3 union all select 4 union all select 5 union all select 6 union all select 6 union all select 7 union all select 8 union all select 9) s6;
결과:
alter table my_table modify varchar_val varchar(20);
Query OK, 1000000 rows affected (2.91 sec)
alter table my_table add int_val int;
Query OK, 1000000 rows affected (2.86 sec)