Mil*_*dia 27 mysql unique unique-key
我在尝试添加UNIQUE KEY时遇到了错误.这就是我想要做的.我有一个名为'unique_id'的列,它是VARCHAR(100).表中没有定义索引.我收到这个错误:
#1062 - Duplicate entry '' for key 'unique_id'
Run Code Online (Sandbox Code Playgroud)
当我尝试添加UNIQUE键时.这是我在phpMyAdmin中设置它的截图:

这是由phpMyAdmin生成的MySQL查询:
ALTER TABLE `wind_archive` ADD `unique_id` VARCHAR( 100 ) NOT NULL FIRST ,
ADD UNIQUE (
`unique_id`
)
Run Code Online (Sandbox Code Playgroud)
我过去遇到过这个问题但从未解决过,所以我只是从头开始重建这个表.不幸的是,在这种情况下我不能这样做,因为表中已有很多条目.谢谢你的帮助!
Nam*_*ian 36
错误说明了一切:
Duplicate entry ''
Run Code Online (Sandbox Code Playgroud)
因此,请运行以下查询:
SELECT unique_id,COUNT(unique_id)
FROM yourtblname
GROUP BY unique_id
HAVING COUNT(unique_id) >1
Run Code Online (Sandbox Code Playgroud)
此查询还将向您显示问题
SELECT *
FROM yourtblname
WHERE unique_id=''
Run Code Online (Sandbox Code Playgroud)
这将显示存在重复值的位置.您正尝试在具有重复项的字段上创建唯一索引.您需要先解决重复数据,然后添加索引.
RQu*_*ube 15
这是我第三次寻找这个问题的解决方案,所以作为参考,我在这里发布答案.
根据数据,我们可以使用带有Alter命令的IGNORE关键字.如果指定了IGNORE,则只对第一行使用唯一键上具有重复项的行,将删除其他冲突行.不正确的值将截断为最接近的匹配可接受值.
IGNOREMySQL 的关键字扩展似乎在某些版本的MySQL上的InnoDB版本中存在错误.
您可以随时转换为MyISAM,IGNORE-ADD索引,然后转换回InnoDB
ALTER TABLE table ENGINE MyISAM;
ALTER IGNORE TABLE table ADD UNIQUE INDEX dupidx (field);
ALTER TABLE table ENGINE InnoDB;
Run Code Online (Sandbox Code Playgroud)
请注意,如果您有外键约束,这将不起作用,您必须先删除它们,然后稍后再添加它们.
| 归档时间: |
|
| 查看次数: |
72776 次 |
| 最近记录: |