Duplicate entry * for key *

一、问题

插入数据时报错

Duplicate entry * for key *

二、分析

建表语句

CREATE TABLE `t_product_result_config` (
  `id` varchar(32) NOT NULL,
  `type` tinyint(4) NOT NULL COMMENT '条件类型 0:优秀,1:一般',
  `product_condition` json DEFAULT NULL COMMENT '条件对象JSON',
  `create_user_id` varchar(32) NOT NULL COMMENT '条件所属用户id',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `gender` tinyint(4) NOT NULL COMMENT '性别类型 0:男,1:女,2:中性',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_id` (`id`),
  UNIQUE KEY `uk_type_create_user_id` (`type`,`create_user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='测品结果条件表';

插入的SQL

问题定位

UNIQUE KEY uk_type_create_user_id (type,create_user_id)

相同的create_user_id和type下,由于UNIQUE KEY限制,只能存在一条数据;而产品需求是能建不同性别的数据,所以需要新增一个关联字段

三、解决方案

ALTER TABLE t_product_result_config DROP INDEX `uk_type_create_user_id`;
ALTER TABLE t_product_result_config ADD UNIQUE KEY `uk_type_create_user_id`(`type`,`gender`,`create_user_id`);
posted @ 2019-04-18 12:44  这个人在加班  阅读(7972)  评论(0编辑  收藏  举报