Risposte:
Hai provato questo?
ALTER TABLE <table_name> MODIFY <col_name> VARCHAR(65353);
Questo cambierà il tipo di col_name inVARCHAR(65353)
ALTER TABLE <tablename> CHANGE COLUMN <colname> <colname> VARCHAR(65536);
Devi elencare il nome della colonna due volte, anche se non stai cambiando il suo nome.
Si noti che dopo aver apportato questa modifica, il tipo di dati della colonna sarà MEDIUMTEXT
.
Miky D è corretto, il MODIFY
comando può farlo in modo più conciso.
Per quanto riguarda le MEDIUMTEXT
cose: una riga di MySQL può contenere solo 65535 byte (senza contare le colonne BLOB / TEXT). Se si tenta di modificare una colonna in modo che sia troppo grande, rendendo la dimensione totale della riga 65536 o superiore, è possibile che venga visualizzato un errore. Se provi a dichiarare una colonna di VARCHAR(65536)
allora è troppo grande anche se è l'unica colonna in quella tabella, quindi MySQL la converte automaticamente in un MEDIUMTEXT
tipo di dati.
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)
Ho letto male la tua domanda originale, che vuoi VARCHAR(65353)
, che MySQL può fare, a condizione che la dimensione della colonna sommata con le altre colonne nella tabella non superi 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