首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在不删除索引的情况下将索引varchar(100)修改为文本?

如何在不删除索引的情况下将索引varchar(100)修改为文本?
EN

Stack Overflow用户
提问于 2017-02-13 07:12:22
回答 1查看 1.3K关注 0票数 1

是否可以将列名称修改为text数据类型,而无需在列上删除索引。或任何mysql变量,当存在用于索引的文本列时,指定默认keylength,同时更改该列的数据类型。

代码语言:javascript
运行
复制
mysql> show create table emp1;
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                        |
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| emp1  | CREATE TABLE `emp1` (
  `name` varchar(100) DEFAULT NULL,
  `id` varchar(10) DEFAULT NULL,
  `date` date DEFAULT NULL,
  KEY `index1` (`name`),
  KEY `index2` (`id`,`name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> 
mysql> 
mysql> 
mysql> 
mysql> 
mysql> alter table emp1 modify column name text;
ERROR 1170 (42000): BLOB/TEXT column 'name' used in key specification without a key length

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-13 07:42:57

如果不在索引上设置键长度,TEXT字段上就不能有索引。当前索引没有键长度,因此在删除这些索引之前不能转换为TEXT

但是您可以创建多余的索引,这样就不会有一刻没有索引了。

代码语言:javascript
运行
复制
mysql> alter table emp1 add key index1_new (name(80));
mysql> alter table emp1 drop key index1;

mysql> alter table emp1 add key index2_new (id,name(80));
mysql> alter table emp1 drop key index2;

mysql> alter table emp1 modify column name text;

您也可以将这些步骤合并成更少的步骤。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42198436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档