¿Cómo puedo modificar el tamaño de la columna en una tabla mysql?


He creado una tabla, y sin querer poner varchar longitud como 300 en lugar de 65353. ¿Cómo puedo arreglar eso?

Un ejemplo sería apreciado.

Author: shad0w_wa1k3r, 2009-08-14

2 answers

¿has probado esto?

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

Esto cambiará el tipo de col_name a VARCHAR(65353)

 492
Author: Mike Dinescu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-04 16:12:39
ALTER TABLE <tablename> CHANGE COLUMN <colname> <colname> VARCHAR(65536);

Debe listar 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 lo de 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 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 a 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)

Malinterpreté tu pregunta original, quieres VARCHAR(65353), que MySQL puede hacer, siempre y cuando el tamaño de la columna sumada con las otras columnas de la tabla no exceda 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
 23
Author: Bill Karwin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-14 19:22:06