我创建了一个表,并将一个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约束?
发布于 2016-02-23 09:52:47
之所以出现这个问题,是因为我之前在尝试删除UNIQUE约束时运行了以下查询:
ALTER TABLE mytable CHANGE column_name column_name INT UNSIGNED NOT NULL这以某种方式创建了一个名为column_name_2的新列,并为它分配了UNIQUE约束。因此,当我像@Paolof76 76建议的那样运行SHOW CREATE TABLE时,我在列中发现:
UNIQUE KEY `column_name_2` (`column_name`)我猜想是由于上面的ALTER语句创建的。所以我跑了
ALTER TABLE mytable DROP INDEX column_name_2消除了唯一的钥匙解决了我的问题。谢谢大家的提醒,@Paolof76 76!
https://stackoverflow.com/questions/35572407
复制相似问题