我如何修改mysql表中列的大小?

我创build了一个表,不小心把varchar长度设置为300而不是65353 。 我该如何解决这个问题?

一个例子,将不胜感激。

你尝试过吗?

 ALTER TABLE <table_name> MODIFY <col_name> VARCHAR(65353); 

这会将col_name的types更改为VARCHAR(65353)

 ALTER TABLE <tablename> CHANGE COLUMN <colname> <colname> VARCHAR(65536); 

即使您没有更改名称,也必须列出两次列名。

请注意,进行此更改后,该列的数据types将为MEDIUMTEXT


Miky D是正确的, MODIFY命令可以更简洁地做到这一点。


重新使用MEDIUMTEXT东西:MySQL行只能是65535字节(不包括BLOB / TEXT列)。 如果您尝试将列更改得太大,使行65536或更大的总大小可能会出错。 如果你尝试声明一个VARCHAR(65536)VARCHAR(65536)那么即使它是该表中唯一的列也是如此,所以MySQL会自动将它转换为MEDIUMTEXT数据types。

 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) 

我误解了你原来的问题,你想要VARCHAR(65353) ,MySQL可以这样做,只要该列的大小与表中的其他列相加不超过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