首页 > 数据库 > mysql教程 > 为什么我在更改表时收到 MySQL 错误 1062:键'PRIMARY”的重复条目'0”?

为什么我在更改表时收到 MySQL 错误 1062:键'PRIMARY”的重复条目'0”?

Susan Sarandon
发布: 2025-01-01 00:42:10
原创
841 人浏览过

Why am I getting MySQL Error 1062: Duplicate entry '0' for key 'PRIMARY' when altering my table?

MySQL 错误 1062:主键重复 '0'

您在更改 momento_distribution 表时遇到问题,收到错误“ 1062 - 键“PRIMARY”的重复条目“0””。这可能表明表中的数据存在问题。

原始表结构中定义的主键是 momento_id 和 momento_idmember 列的组合。但是,在添加新的 id 列并将其设置为主键后,您在此列中遇到了重复项,特别是值“0”。

要解决此问题,您可以尝试指定 id 列作为表定义中的自动增量,如下所示:

CREATE TABLE `momento_distribution`
  (
     `momento_id`       INT(11) NOT NULL,
     `momento_idmember` INT(11) NOT NULL,
     `created_at`       DATETIME DEFAULT NULL,
     `updated_at`       DATETIME DEFAULT NULL,
     `unread`           TINYINT(1) DEFAULT '1',
     `accepted`         VARCHAR(10) NOT NULL DEFAULT 'pending',
     `ext_member`       VARCHAR(255) DEFAULT NULL,
     `id`               INT(11) NOT NULL AUTO_INCREMENT,
     PRIMARY KEY (`id`),  -- New primary key
     KEY `momento_distribution_FI_2` (`momento_idmember`),
     KEY `accepted` (`accepted`, `ext_member`)
  )
ENGINE=InnoDB
DEFAULT CHARSET=latin1;
登录后复制

或者,如果您已经创建了 id 列,则可以将其修改为使用以下查询进行自动增量:

ALTER TABLE `momento_distribution`
  CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT,
  DROP PRIMARY KEY,
  ADD PRIMARY KEY (`id`);  -- New primary key
登录后复制

通过将 id 列指定为自动增量,可以确保每一行都具有该列的唯一值,从而消除重复的“0”问题。这将允许您更改表结构并将 id 列指定为主键,而不会丢失数据。

以上是为什么我在更改表时收到 MySQL 错误 1062:键'PRIMARY”的重复条目'0”?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板