others - MySQL - Error Code: 1062. Duplicate entry '1' for key 'PRIMARY'

72 4

当我尝试这个,我得到了这个错误消息,

 

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')



Error Code : 1062. Duplicate entry'1'for key'PRIMARY'

我没有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

 

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');



时间: 原作者:

124 1

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

为什么不将列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',. ..)



原作者:
74 2

我刚刚遇到了同样的问题,但是,在这里它似乎来自于我声明ID列是UNsigned的事实,并且结合ID值为'0 '(零)导致导入失败...

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

原作者:
55 4

同时检查触发器。

在历史表触发器中遇到这样的情况,它试图将主表id插入历史表id而不是正确的hist-tablesource_id列。

update语句根本没有接触 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;



原作者:
108 5

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

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

 

SET SESSION sql_mode='NO_AUTO_VALUE_ON_ZERO';



原作者:
...