web-dev-qa-db-fra.com

Code d'erreur: 1062. Entrée en double '1' pour la clé 'PRIMARY'

J'ai un problème avec ce message d'erreur, quand j'essaye ceci:

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', '[email protected]', 'Bolzanoturismo.it', 'Bolzano', 'BZ')

Code d'erreur: 1062. Entrée en double '1' pour la clé 'PRIMARY'

Je n'ai pas de données auto_incrémentées, SVP, aidez-moi! 

C'est la table liée, 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

INSÉRER DANS  

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', '[email protected]', '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', '[email protected]', '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', '[email protected]', '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', '[email protected]', '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, '[email protected]', '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', '[email protected]', 'Ortisei.it', 'Ortisei', 'BZ');
19
FrancescoN

Le principale la raison pour laquelle l’erreur a été générée tient au fait qu’il existe déjà une valeur 1 pour la colonne ID dans laquelle vous la définissez comme PRIMARY KEY ( les valeurs sont uniques ) dans la table que vous insérez.

Pourquoi ne pas définir la colonne ID comme AUTO_INCREMENT?

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

et lorsque vous insérez un enregistrement, vous pouvez maintenant ignorer la colonne ID

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

Si vous utilisez PHPMyAdmin .__, vous pouvez résoudre ce problème en procédant comme suit:

ATTENTION: N'utilisez pas cette solution si vous souhaitez conserver un fichier .__ existant. enregistrements dans votre table.

Étape 1: Sélectionnez la méthode d'exportation de la base de données à personnaliser:

enter image description here

Étape 2: Assurez-vous de vérifier la table tronquée avant de l'insérer dans les options de création de données:

enter image description here

Vous pouvez maintenant importer cette base de données avec succès.

15
Indrasinh Bihola

Si vous essayez de remplir une table à partir d'un cliché SQL, assurez-vous que la table répertoriée dans les instructions "INSERT INTO" du cliché est identique à celle que vous tentez de remplir. Ouvrir "MyTable" et importer avec un cliché SQL provoquera exactement ce type d'erreur si le cliché tente de placer des entrées dans "MyOtherTable", qui peut déjà en avoir.

7
CodeOwl

Le problème est lié à votre fichier - vous essayez de créer une base de données avec une copie - vous trouverez quelque chose comme ceci en haut de votre fichier:

CREATE DATABASE IF NOT EXISTS *THE_NAME_OF_YOUR_DB* JEU DE CARACTERES PAR DEFAUT latin1 COLLATE latin1_general_ci; USE *THE_NAME_OF_YOUR_DB*;

et je suis sûr que vous avez déjà une base de données portant ce nom - IN THE SAME SERVER - veuillez vérifier. Il suffit de changer le nom OR EFFACER CETTE LIGNE!

2
bito_

Quand j'ai eu ce genre d'erreur, j'ai dû mettre à jour le type de données d'un cran. Par exemple, si je l'ai comme "petit int" changez-le en "petit int" ~ Nita

2
Nita

Je viens juste de rencontrer le même problème, mais ici, cela semble venir du fait que j'ai déclaré la colonne ID à UNsigned et que sa combinaison avec une valeur ID de '0' (zéro) faisait échouer l'importation ...

Donc, en changeant la valeur de chaque ID (colonne PK) pour laquelle j'avais déclaré «0» et chaque FK correspondant à la nouvelle valeur, mon problème a été résolu.

1
user4563764

Vérifiez également vos déclencheurs.

Cela s'est produit avec un déclencheur de table d'historique qui a tenté d'insérer la table principale id dans la table d'historique id à la place de la colonne hist-table.source_id appropriée.

La déclaration de mise à jour n'a pas du tout touché la colonne id. Il a donc fallu un certain temps pour trouver:

UPDATE source_table SET status = 0;

Le déclencheur a essayé de faire quelque chose de similaire à ceci:

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

A été corrigé à quelque chose comme ça:

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