我创建了一个表,并为特定列分配了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
约束?
答案 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!