tabla - modificar un campo en mysql
¿Cómo puedo modificar el tamaño de la columna en una tabla mysql? (2)
¿Has probado esto?
ALTER TABLE <table_name> MODIFY <col_name> VARCHAR(65353);
Esto cambiará el tipo de VARCHAR(65353)
a VARCHAR(65353)
He creado una tabla y accidentalmente puse la longitud varchar
como 300 en lugar de 65353 . ¿Cómo puedo arreglar eso?
Un ejemplo sería apreciado.
ALTER TABLE <tablename> CHANGE COLUMN <colname> <colname> VARCHAR(65536);
Debe indicar 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 comando MODIFY
puede hacer esto de manera más concisa.
Con respecto a MEDIUMTEXT
: una fila de 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 65536 o mayor, puede obtener un error. Si intenta declarar una columna de 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 tipo de datos 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)
He leído mal tu pregunta original, quieres VARCHAR(65353)
, lo que MySQL puede hacer, siempre que el tamaño de la columna sumada con las otras columnas en la tabla no exceda de 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