36

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

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”

我没有自动增量数据,请帮助我!

这是与表相关的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');
4

8 回答 8

34

产生错误的主要原因是,在您插入的表中,您将其定义为(值是唯一的1)的列已经存在一个现有值。IDPRIMARY KEY

为什么不将列设置IDAUTO_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', ...)
于 2013-01-31T14:37:24.133 回答
22

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

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

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

在此处输入图像描述

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

在此处输入图像描述

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

于 2015-02-02T09:36:40.153 回答
8

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

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

SET SESSION sql_mode='NO_AUTO_VALUE_ON_ZERO';
于 2019-05-05T23:37:27.357 回答
7

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

于 2013-08-29T14:24:47.853 回答
2

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

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

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

于 2013-08-25T09:24:32.680 回答
2

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

于 2013-10-03T15:26:00.983 回答
2

还要检查你的触发器。

遇到了一个历史表触发器,该触发器试图将主表id插入历史表id而不是正确的hist-tablesource_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;
于 2019-01-23T16:56:09.700 回答
1

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

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

于 2015-02-13T14:03:59.217 回答