Respuestas:
¿Has probado esto?
ALTER TABLE <table_name> MODIFY <col_name> VARCHAR(65353);
Esto cambiará el tipo de col_name aVARCHAR(65353)
ALTER TABLE <tablename> CHANGE COLUMN <colname> <colname> VARCHAR(65536);
Debe enumerar el nombre de la columna dos veces, incluso si no está cambiando su nombre.
Tenga en cuenta que después de realizar este cambio, el tipo de datos de la columna será MEDIUMTEXT
.
Miky D es correcto, el MODIFY
comando puede hacer esto de manera más concisa.
Recuerde MEDIUMTEXT
: una fila MySQL puede tener solo 65535 bytes (sin contar las columnas BLOB / TEXT). Si intenta cambiar una columna para que sea demasiado grande, haciendo que el tamaño total de la fila sea 65536 o mayor, puede recibir un error. Si intenta declarar una columna, VARCHAR(65536)
entonces es demasiado grande, incluso si es la única columna en esa tabla, por lo que MySQL la convierte automáticamente en un MEDIUMTEXT
tipo de datos.
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)
Leí mal su pregunta original, que quiere VARCHAR(65353)
, que MySQL puede hacer, siempre que el tamaño de la columna sumado con las otras columnas de la tabla no exceda los 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