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

В некотором программировании я предполагаю, что математика была бы самой полезной, но не быть программистом. Я удачлив, если я могу добавить 2+2 без моего удобного щегольского калькулятора.

295
задан Yves M. 17 January 2019 в 03:09
поделиться

2 ответа

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

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

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

558
ответ дан 23 November 2019 в 01:34
поделиться
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
25
ответ дан 23 November 2019 в 01:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: