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

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

пример был бы оценен.

2 ответов


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

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 команда может сделать это более кратко.


Re 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