[mysql] mysql 테이블에서 열 크기를 어떻게 수정합니까?

나는 테이블을 만들고 실수 varchar300대신 길이를 넣었다 65353. 어떻게 고칠 수 있습니까?

예를 들어 주시면 감사하겠습니다.



답변

이것을 시도 했습니까?

ALTER TABLE <table_name> MODIFY <col_name> VARCHAR(65353);

이것은 col_name 의 타입을VARCHAR(65353)


답변

ALTER TABLE <tablename> CHANGE COLUMN <colname> <colname> VARCHAR(65536);

열 이름을 변경하지 않더라도 열 이름을 두 번 나열해야합니다.

이 변경을 수행 한 후 열의 데이터 유형은입니다 MEDIUMTEXT.


Miky D가 정확하면 MODIFY명령이 더 간결하게 수행 할 수 있습니다.


다시 MEDIUMTEXT말해 : MySQL 행은 65535 바이트 만 가능합니다 (BLOB / TEXT 열은 계산하지 않음). 열을 너무 크게 변경하여 행의 총 크기를 65536 이상으로 만들려고하면 오류가 발생할 수 있습니다. 열을 선언하려고하면 VARCHAR(65536)해당 테이블의 유일한 열인 경우에도 열이 너무 커서 MySQL은 자동으로 MEDIUMTEXT데이터 유형 으로 변환합니다 .

mysql> create table foo (str varchar(300));
mysql> alter table foo modify str varchar(65536);
mysql> show create table foo;
CREATE TABLE `foo` (
  `str` mediumtext
) ENGINE=MyISAM DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

VARCHAR(65353)테이블의 다른 열과 합한 열 크기가 65535를 초과하지 않는 한 MySQL에서 할 수있는 원래 질문을 잘못 읽었습니다 .

mysql> create table foo (str1 varchar(300), str2 varchar(300));
mysql> alter table foo modify str2 varchar(65353);
ERROR 1118 (42000): Row size too large.
The maximum row size for the used table type, not counting BLOBs, is 65535.
You have to change some columns to TEXT or BLOBs


답변