Odpowiedzi:
Próbowałeś tego?
ALTER TABLE <table_name> MODIFY <col_name> VARCHAR(65353);
Spowoduje to zmianę typu col_name naVARCHAR(65353)
ALTER TABLE <tablename> CHANGE COLUMN <colname> <colname> VARCHAR(65536);
Musisz dwukrotnie wymienić nazwę kolumny, nawet jeśli nie zmieniasz jej nazwy.
Pamiętaj, że po wprowadzeniu tej zmiany typ danych kolumny będzie MEDIUMTEXT
.
Miky D ma rację, MODIFY
polecenie może to zrobić bardziej zwięźle.
Chodzi o to MEDIUMTEXT
, że wiersz MySQL może mieć tylko 65535 bajtów (nie licząc kolumn BLOB / TEXT). Jeśli spróbujesz zmienić kolumnę na zbyt dużą, co spowoduje, że całkowity rozmiar wiersza 65536 lub większy, może wystąpić błąd. Jeśli spróbujesz zadeklarować kolumnę VARCHAR(65536)
, jest ona zbyt duża, nawet jeśli jest to jedyna kolumna w tej tabeli, więc MySQL automatycznie konwertuje ją na MEDIUMTEXT
typ danych.
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)
Źle odczytałem twoje oryginalne pytanie, które chcesz VARCHAR(65353)
, co MySQL może zrobić, o ile rozmiar kolumny zsumowany z innymi kolumnami w tabeli nie przekracza 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