mysql Error : [Err] 1062 - Duplicate entry '1207543053@qq.com' for key 'email'
问题
在执行 insert into
语句的时候,报如题的错误:Duplicate entry '1207543053@qq.com' for key 'email'
。一开始看以为是主键冲突,发现 email
并不是主键(主键也是特殊的 unique 索引)。想到 unique
索引。
索引如果是 primary、unique 这两种,那么数据表的数据对应的这个字段就必须保证其每条记录的唯一性。否则就会产生这个错误。
创建 unique 索引的方法
# 可以跟在创建表的语句后面
# unique key 索引名 (字段名)
UNIQUE KEY `email` (`email`)
# 也可以在表创建之后单独创建
# create unique index 索引名 on table(字段名)
CREATE UNIQUE INDEX email ON destoon_member(email);
解决
针对存在 primary、unique 索引字段的表,需要在 create、update 的时候首先判断是否已存在相同字段值的记录(后端验证)。在创建和更新记录的 action 中添加相关数据验证即可。