Я создал таблицу и случайно поставил varchar
длиной 300
вместо 65353
. Как я могу это исправить?
Пример будет оценен.
Я создал таблицу и случайно поставил 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)
, который может сделать 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