错误代码:1062。键“PRIMARY”的重复条目“1”

Posted

技术标签:

【中文标题】错误代码:1062。键“PRIMARY”的重复条目“1”【英文标题】:Error Code: 1062. Duplicate entry '1' for key 'PRIMARY' 【发布时间】:2013-01-15 16:49:40 【问题描述】:

我对此错误消息有疑问,当我尝试这个时:

INSERT INTO `PROGETTO`.`UFFICIO-INFORMAZIONI` (`ID`, `viale`, `num_civico`,  
`data_apertura`, `data_chiusura`, `orario_apertura`, `orario_chiusura`, 
`telefono`, `mail`, `web`, `Nome-paese`, `Comune`) 
VALUES (1, 'Viale Cogel ', '120', '2012-05-21', '2012-09-30', '08:00', '23:30',
'461801243', 'informazioni@bolzano.it', 'Bolzanoturismo.it', 'Bolzano', 'BZ')

错误代码:1062。密钥“PRIMARY”的条目“1”重复

我没有 auto_increment 数据,请帮助我!

这是与表格相关的,UFFICIO-INFORMAZIONI

CREATE  TABLE IF NOT EXISTS `PROGETTO`.`UFFICIO-INFORMAZIONI` (
  `ID` INT(11) NOT NULL ,
  `viale` VARCHAR(45) NULL ,
  `num_civico` VARCHAR(5) NULL ,
  `data_apertura` DATE NULL ,
  `data_chiusura` DATE NULL ,
  `orario_apertura` TIME NULL ,
  `orario_chiusura` TIME NULL ,
  `telefono` VARCHAR(15) NULL ,
  `mail` VARCHAR(100) NULL ,
  `web` VARCHAR(100) NULL ,
  `Nome-paese` VARCHAR(45) NOT NULL ,
  `Comune` CHAR(2) NOT NULL ,
  PRIMARY KEY (`ID`) ,
  INDEX `Nome_paese` (`Nome-paese` ASC) ,
  INDEX `Comune` (`Comune` ASC) ,
  CONSTRAINT `Nome_paese`
    FOREIGN KEY (`Nome-paese` )
    REFERENCES `PROGETTO`.`PAESE` (`Nome-paese` )
    ON DELETE NO ACTION
    ON UPDATE CASCADE,
  CONSTRAINT `Comune`
    FOREIGN KEY (`Comune` )
    REFERENCES `PROGETTO`.`PAESE` (`Comune` )
    ON DELETE NO ACTION
    ON UPDATE CASCADE)
ENGINE = InnoDB

插入

INSERT INTO `PROGETTO`.`UFFICIO-INFORMAZIONI` (`ID`, `viale`, `num_civico`, `data_apertura`, `data_chiusura`, `orario_apertura`, `orario_chiusura`, `telefono`, `mail`, `web`, `Nome-paese`, `Comune`) VALUES (1, 'Viale Cogel ', '120', '2012-05-21', '2012-09-30', '08:00', '23:30', '461801243', 'informazioni@bolzano.it', 'Bolzanoturismo.it', 'Bolzano', 'BZ');
    INSERT INTO `PROGETTO`.`UFFICIO-INFORMAZIONI` (`ID`, `viale`, `num_civico`, `data_apertura`, `data_chiusura`, `orario_apertura`, `orario_chiusura`, `telefono`, `mail`, `web`, `Nome-paese`, `Comune`) VALUES (2, 'Via Olmo', '45', '2012-05-01', '2012-09-30', '08:00', '23:30', '393495169301', 'informazioni@lech.it', 'Lechinformation.it', 'Lech', 'BZ');
    INSERT INTO `PROGETTO`.`UFFICIO-INFORMAZIONI` (`ID`, `viale`, `num_civico`, `data_apertura`, `data_chiusura`, `orario_apertura`, `orario_chiusura`, `telefono`, `mail`, `web`, `Nome-paese`, `Comune`) VALUES (3, 'Via Quercia', '37', '2012-05-11', '2012-09-30', '08:00', '23:30', '393381679321', 'info@trento.it', 'Trentoinformaiozni.it', 'Trento', 'TN');
    INSERT INTO `PROGETTO`.`UFFICIO-INFORMAZIONI` (`ID`, `viale`, `num_civico`, `data_apertura`, `data_chiusura`, `orario_apertura`, `orario_chiusura`, `telefono`, `mail`, `web`, `Nome-paese`, `Comune`) VALUES (4, 'Via Atene', '76', '2012-06-01', '2012-09-15', '08:00', '23:30', '39349361345', 'info@sanmartinodicastrozza.it', 'SanMartino.it', 'San Martino di Castrozza', 'TN');
    INSERT INTO `PROGETTO`.`UFFICIO-INFORMAZIONI` (`ID`, `viale`, `num_civico`, `data_apertura`, `data_chiusura`, `orario_apertura`, `orario_chiusura`, `telefono`, `mail`, `web`, `Nome-paese`, `Comune`) VALUES (5, 'Via Salice', '45', '2012-05-01', '2012-09-20', '08:00', '23:30', NULL, 'info@pejo.it', 'Pejoturismo.it', 'Pejo', 'TN');
    INSERT INTO `PROGETTO`.`UFFICIO-INFORMAZIONI` (`ID`, `viale`, `num_civico`, `data_apertura`, `data_chiusura`, `orario_apertura`, `orario_chiusura`, `telefono`, `mail`, `web`, `Nome-paese`, `Comune`) VALUES (6, 'Piazza Sempreverde', '34', '2012-05-15', '2012-09-15', '08:00', '23:30', '392516789', 'info@ortisei.it', 'Ortisei.it', 'Ortisei', 'BZ');

【问题讨论】:

所以,表中已经有一条记录具有ID=1。由于IDPRIMARY KEY,因此不能有多个具有相同值的记录。你希望这个手术做什么?忽略新的插入?更新现有记录?替换现有记录? 您确定错误是指该表的主字段吗?它是否引用了其他表中的其他 ID? 0 14:55:20 INSERT INTO PROGETTO.UFFICIO-INFORMAZIONI (ID, viale, num_civico, data_apertura, data_chiusura, orario_chiusura, @, telefono, mail, web, Nome-paese, Comune) 值 (1, 'Viale Cogel', '120', '2012-05-21', '2012-09-30' ,“08:00”,“23:30”,“461801243”,“informazioni@bolzano.it”,“Bolzanoturismo.it”,“Bolzano”,“BZ”)错误代码:1062。重复条目“1”为键“主要” 可能您的外键有问题,我正在尝试使用 [sql fiddle] (sqlfiddle.com/#!2/c6fb9) 复制您的问题,但没有成功。您能否提供完整的数据库架构? dl.dropbox.com/u/60796322/ultimateProgetto.sql 【参考方案1】:

main 产生错误的原因是因为ID 列已经存在1 值,您在其中将其定义为PRIMARY KEY值是唯一的)在您插入的表中。

为什么不将ID 列设置为AUTO_INCREMENT

CREATE  TABLE IF NOT EXISTS `PROGETTO`.`UFFICIO-INFORMAZIONI` (
  `ID` INT(11) NOT NULL AUTO_INCREMENT,
  `viale` VARCHAR(45) NULL ,
   .....

当您插入记录时,您现在可以跳过列ID

INSERT INTO `PROGETTO`.`UFFICIO-INFORMAZIONI` (`viale`, `num_civico`, ...) 
VALUES ('Viale Cogel ', '120', ...)

【讨论】:

我刚刚添加了我所有的 INSERT INTO ;没有重复的PK..那是因为我不明白发生了什么 您可能已经多次运行插入。 我已经删除了架构并重新创建了 2 次...我总是遇到同样的错误,如上所示。编辑:: auto_increment 将是一个选项,但没有它也可以工作...... 您用来重新创建表的脚本中是否有插入? 在脚本中,首先是 CREATE TABLE,然后是 INSERT INTO。这些如上所示,并且该表没有其他查询/记录(UFFICIO-INFORMAZIONI)【参考方案2】:

如果您使用的是 PHPMyAdmin 您可以通过以下方式解决此问题:

注意:如果您想维护现有的解决方案,请不要使用此解决方案 表中的记录。

第一步:选择数据库导出方式为自定义:

第 2 步:请确保在插入数据创建选项之前检查 truncate table:

现在您可以成功导入此数据库了。

【讨论】:

当使用 phpmyadmin 或终端从另一个导入数据库时​​,这是一种很好且省时的解决方案。 当试图在一个巨大的表上创建新索引时,我采取了重命名,从旧表创建一个新表,添加我的索引,然后从旧表插入。即使在空的新表上也出现重复的主键错误。在复制数据之前截断它可以解决这个问题。【参考方案3】:

如果您尝试从 SQL 转储填充表,请确保转储的“INSERT INTO”语句中列出的表与您尝试填充的表相同。如果转储试图将条目放入可能已经有条目的“MyOtherTable”中,则打开“MyTable”并使用 SQL 转储导入会引发这种错误。

【讨论】:

【参考方案4】:

如果您有一个新数据库并进行了全新的干净导入,则问题可能来自插入包含“0”增量的数据,这将转换为带有AUTO_INCREMENT 的“1”并导致此错误。

我的解决方案是在 sql 导入文件中使用。

SET SESSION sql_mode='NO_AUTO_VALUE_ON_ZERO';

【讨论】:

【参考方案5】:

问题与您的文件有关 - 您正在尝试使用副本创建数据库 - 在文件顶部您会发现如下内容:

如果不存在则创建数据库*THE_NAME_OF_YOUR_DB* 默认字符集 latin1 整理 latin1_general_ci; 使用*THE_NAME_OF_YOUR_DB*;

我确定您已经有一个同名的数据库 - 在同一服务器中 - 请检查。只需更改名称或删除此行!

【讨论】:

【参考方案6】:

当我遇到这种错误时,我不得不将数据类型更新一个档次。例如,如果我将其设置为“tiny int”,则将其更改为“small int” ~ 妮塔

【讨论】:

【参考方案7】:

还要检查您的触发器。

遇到了一个历史表触发器,它试图将主表 id 插入到历史表 id 而不是正确的 hist-table.source_id 列中。

更新语句根本没有触及id 列,所以花了一些时间才找到:

UPDATE source_table SET status = 0;

触发器试图做类似的事情:

FOR EACH ROW
BEGIN
    INSERT INTO `history_table` (`action`,`id`,`status`,`time_created`)
    VALUES('update', NEW.id, NEW.status, NEW.time_created);
END;

已更正如下:

FOR EACH ROW
BEGIN
    INSERT INTO `history_table` (`action`,`source_id`,`status`,`time_created`)
    VALUES('update', NEW.id, NEW.status, NEW.time_created);
END;

【讨论】:

【参考方案8】:

我刚刚遇到了同样的问题,但这似乎是因为我将 ID 列声明为无符号,并且结合 ID 值“0”(零)导致导入失败。 ..

因此,通过将我声明为“0”的每个 ID(PK 列)和每个对应的 FK 的值更改为新值,我的问题就解决了。

【讨论】:

以上是关于错误代码:1062。键“PRIMARY”的重复条目“1”的主要内容,如果未能解决你的问题,请参考以下文章

错误代码:1062。重复条目 'PRIMARY'

#1062 - 键 'PRIMARY' 的重复条目 '19'

[23000][1062] 键 'PRIMARY' 的重复条目 '0'

如何修复完整性约束违规:1062 键“PRIMARY:Laravel Pivot Table”的重复条目“1-1”

(1062,“重复输入'0'用于键'PRIMARY'”)

当我尝试更新记录时,我收到错误 #1062 - 键“ID_UNIQUE”的重复条目