繁体   English   中英

MySQL不删除唯一约束的索引

[英]MySQL not dropping index for unique constraint

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

... column_name INT UNSIGNED NOT NULL UNQUE

现在,我不再希望该列具有唯一约束,因此我尝试对其进行修改:

ALTER TABLE mytable DROP INDEX column_name

就像我在这里看到的一样。

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

#1062 Duplicate entry '10' for key column_name_2

我认为,这意味着约束仍然保留在桌子上。 (也很有趣如何将_2附加到列名)。 但是,如果我重复上面的ALTER语句,我得到

 #1091 - Can't DROP 'column_name'; check that column/key exists

我也试过了

ALTER TABLE mytable DROP INDEX UNIQUE

这给了我错误

#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约束?

之所以出现此问题,是因为我之前曾尝试删除UNIQUE约束来运行以下查询:

ALTER TABLE mytable CHANGE column_name column_name INT UNSIGNED NOT NULL

这样就创建了一个名为column_name_2的新列,并为其分配了UNIQUE约束。 因此,当我像@ Paolof76建议的那样运行SHOW CREATE TABLE ,我发现在各列中:

UNIQUE KEY `column_name_2` (`column_name`)

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

ALTER TABLE mytable DROP INDEX column_name_2

消除了唯一密钥并解决了我的问题。 感谢@ Paolof76的提示!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM