Respostas:
Você já tentou isso?
ALTER TABLE <table_name> MODIFY <col_name> VARCHAR(65353);
Isso mudará o tipo do col_name paraVARCHAR(65353)
ALTER TABLE <tablename> CHANGE COLUMN <colname> <colname> VARCHAR(65536);
Você precisa listar o nome da coluna duas vezes, mesmo que não esteja mudando o nome.
Observe que, depois de fazer essa alteração, o tipo de dados da coluna será MEDIUMTEXT
.
Miky D está correto, o MODIFY
comando pode fazer isso de forma mais concisa.
A MEDIUMTEXT
questão: uma linha do MySQL pode ter apenas 65535 bytes (sem contar as colunas BLOB / TEXT). Se você tentar alterar uma coluna para ser muito grande, tornando o tamanho total da linha 65536 ou superior, poderá ocorrer um erro. Se você tentar declarar uma coluna VARCHAR(65536)
dela, ela será muito grande, mesmo que seja a única coluna nessa tabela, para que o MySQL a converta automaticamente em um MEDIUMTEXT
tipo de dados.
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)
Você leu errado sua pergunta original VARCHAR(65353)
, o que o MySQL pode fazer, desde que o tamanho da coluna somado às outras colunas da tabela não 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