You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL主键仅校验MAC前6字符引发重复错误,如何调整?

解决MySQL主键仅校验MAC前6字符的问题

问题场景

现有表BLE_PINS,包含TN、MAC、PIN和Date列。执行插入语句:

INSERT INTO `BLE_PINS` (`MAC`, `PIN`) VALUES ('SEEP413E68','99933');

触发错误:

#1062 - Duplicate entry 'SEEP41' for key 'PRIMARY'

查看表定义发现,主键设置为仅校验MAC字段的前6个字符:

CREATE TABLE BLE_PINS ( 
    TN varchar(16) DEFAULT NULL, 
    MAC varchar(100) NOT NULL, 
    PIN varchar(6) NOT NULL, 
    Date timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    PRIMARY KEY (MAC(6)) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1

修改步骤

要让主键校验完整的MAC值,需调整表的主键约束:

  1. 删除原有主键约束
ALTER TABLE BLE_PINS DROP PRIMARY KEY;
  1. 添加基于完整MAC字段的主键约束
ALTER TABLE BLE_PINS ADD PRIMARY KEY (MAC);

注意事项

执行上述操作前,必须确保表中不存在完整MAC值重复的记录。如果有重复数据,需先清理(比如删除重复行、合并重复数据),否则添加新主键时会触发重复键错误。

内容的提问来源于stack exchange,提问作者tbickford

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 21:02:05