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

Duplicate entry * for key *

问题定位

UNIQUE KEYuk_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`);
上一篇:mysql Duplicate entry '9223372036854775807' for key 'PRIMARY'


下一篇:LeetCode217 Contains Duplicate