Ответы:
Вы пробовали это?
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)
, чтобы ваш исходный вопрос был неверно истолкован , что может сделать MySQL, если этот размер столбца, суммируемый с другими столбцами таблицы, не превышает 65535.
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