veh*_*zzz 295 mysql database alter-table
我创建了一个表,并意外地将varchar长度300代替65353.我该如何解决这个问题?
一个例子将不胜感激.
Mik*_*scu 558
你试过这个吗?
ALTER TABLE <table_name> MODIFY <col_name> VARCHAR(65353);
这会将col_name的类型更改为VARCHAR(65353)
Bil*_*win 25
ALTER TABLE <tablename> CHANGE COLUMN <colname> <colname> VARCHAR(65536);
您必须列出两次列名,即使您没有更改其名称.
请注意,进行此更改后,列的数据类型将为MEDIUMTEXT.
Miky D是正确的,MODIFY命令可以更简洁地做到这一点.
重要的MEDIUMTEXT是:MySQL行只能是65535字节(不包括BLOB/TEXT列).如果您尝试将列更改为太大,使行的总大小为65536或更大,则可能会出错.如果你试图声明一个列VARCHAR(65536)然后它太大了,即使它是该表中唯一的列,所以MySQL会自动将其转换为MEDIUMTEXT数据类型.
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