我如何修改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