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');
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', ...)
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:
É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:
Vous pouvez maintenant importer cette base de données avec succès.
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.
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!
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
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.
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;