首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL不删除唯一约束的索引

MySQL不删除唯一约束的索引
EN

Stack Overflow用户
提问于 2016-02-23 08:29:29
回答 1查看 485关注 0票数 1

我创建了一个表,并将一个UNIQUE CONSTRAINT分配给一个特定的列。

代码语言:javascript
复制
... column_name INT UNSIGNED NOT NULL UNQUE

现在,我不再希望该列具有唯一的约束,因此我尝试修改它:

代码语言:javascript
复制
ALTER TABLE mytable DROP INDEX column_name

就像我看到here一样。

上面的查询第一次成功执行。但是,当我尝试在column_name列中插入重复值时,仍然会得到错误

代码语言:javascript
复制
#1062 Duplicate entry '10' for key column_name_2

我想,这意味着约束仍然存在。( _2如何被附加到列名中也很有趣)。但是如果我重复上面的ALTER语句,我会得到

代码语言:javascript
复制
 #1091 - Can't DROP 'column_name'; check that column/key exists

我也试过

代码语言:javascript
复制
ALTER TABLE mytable DROP INDEX UNIQUE

它给了我错误

代码语言:javascript
复制
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNIQUE' at line 1

不知道是否遗漏了什么,但是如何从本专栏中删除UNIQUE约束?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-23 09:52:47

之所以出现这个问题,是因为我之前在尝试删除UNIQUE约束时运行了以下查询:

代码语言:javascript
复制
ALTER TABLE mytable CHANGE column_name column_name INT UNSIGNED NOT NULL

这以某种方式创建了一个名为column_name_2的新列,并为它分配了UNIQUE约束。因此,当我像@Paolof76 76建议的那样运行SHOW CREATE TABLE时,我在列中发现:

代码语言:javascript
复制
UNIQUE KEY `column_name_2` (`column_name`)

我猜想是由于上面的ALTER语句创建的。所以我跑了

代码语言:javascript
复制
ALTER TABLE mytable DROP INDEX column_name_2

消除了唯一的钥匙解决了我的问题。谢谢大家的提醒,@Paolof76 76!

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

https://stackoverflow.com/questions/35572407

复制
相关文章

相似问题

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