Câu trả lời:
Bạn đã thử điều này?
ALTER TABLE <table_name> MODIFY <col_name> VARCHAR(65353);
Điều này sẽ thay đổi loại của col_name thànhVARCHAR(65353)
ALTER TABLE <tablename> CHANGE COLUMN <colname> <colname> VARCHAR(65536);
Bạn phải liệt kê tên cột hai lần, ngay cả khi bạn không thay đổi tên của nó.
Lưu ý rằng sau khi bạn thực hiện thay đổi này, kiểu dữ liệu của cột sẽ là MEDIUMTEXT
.
Miky D là chính xác, MODIFY
lệnh có thể làm điều này chính xác hơn.
Xin nhắc lại MEDIUMTEXT
: một hàng MySQL chỉ có thể là 65535 byte (không tính các cột BLOB / TEXT). Nếu bạn cố gắng thay đổi một cột quá lớn, làm cho tổng kích thước của hàng 65536 trở lên, bạn có thể gặp lỗi. Nếu bạn cố gắng khai báo một cột VARCHAR(65536)
thì nó quá lớn ngay cả khi đó là cột duy nhất trong bảng đó, vì vậy MySQL sẽ tự động chuyển đổi nó thành một MEDIUMTEXT
loại dữ liệu.
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)
Tôi đã đọc sai câu hỏi ban đầu của bạn, bạn muốn VARCHAR(65353)
, điều mà MySQL có thể làm, miễn là kích thước cột đó được tóm tắt với các cột khác trong bảng không vượt quá 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