나는 테이블을 만들고 실수 varchar
로 300
대신 길이를 넣었다 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