MySQL没有丢弃唯一约束的索引

时间:2016-02-23 08:29:30

标签: mysql

我创建了一个表,并为特定列分配了UNIQUE CONSTRAINT

... column_name INT UNSIGNED NOT NULL UNQUE

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

ALTER TABLE mytable DROP INDEX column_name
就像我看到here一样。

上述查询第一次成功执行。但是当我尝试在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约束?

1 个答案:

答案 0 :(得分:0)

问题出现了,因为我之前运行了以下查询,试图删除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!