[英]MySQL: Does dropping primary key removes unique constraint and/or index?
[英]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.