Как изменить размер столбца в таблице mysql?

Я создал таблицу и случайно поставил varchar длиной 300 вместо 65353. Как я могу это исправить?

Пример будет оценен.

Ответ 1

Вы пробовали это?

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

Это изменит тип col_name на VARCHAR(65353)

Ответ 2

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