Antworten:
Hast du das versucht?
ALTER TABLE <table_name> MODIFY <col_name> VARCHAR(65353);
Dadurch wird der Typ des Spaltennamens in geändertVARCHAR(65353)
ALTER TABLE <tablename> CHANGE COLUMN <colname> <colname> VARCHAR(65536);
Sie müssen den Spaltennamen zweimal auflisten, auch wenn Sie seinen Namen nicht ändern.
Beachten Sie, dass nach dieser Änderung der Datentyp der Spalte lautet MEDIUMTEXT
.
Miky D ist richtig, der MODIFY
Befehl kann dies präziser machen.
Zum MEDIUMTEXT
Thema: Eine MySQL-Zeile kann nur 65535 Byte lang sein (ohne BLOB / TEXT-Spalten). Wenn Sie versuchen, eine Spalte so zu ändern, dass sie zu groß ist und die Gesamtgröße der Zeile 65536 oder höher beträgt, wird möglicherweise eine Fehlermeldung angezeigt. Wenn Sie versuchen, eine Spalte von zu deklarieren, VARCHAR(65536)
ist sie zu groß, selbst wenn sie die einzige Spalte in dieser Tabelle ist. MySQL konvertiert sie daher automatisch in einen MEDIUMTEXT
Datentyp.
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)
Ich habe Ihre ursprüngliche Frage, VARCHAR(65353)
die MySQL ausführen kann, falsch verstanden , solange die mit den anderen Spalten in der Tabelle summierte Spaltengröße 65535 nicht überschreitet.
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