Код ошибки: 1062. Дублирующая запись '1' для ключа 'PRIMARY'

У меня есть проблема с этим сообщением об ошибке, когда я пробую это:

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

Код ошибки: 1062. Дублировать запись '1' для ключа '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', '[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');

Ответ 1

Причина main, почему возникла ошибка, потому что уже существует значение 1 для столбца ID, в котором вы определяете его как 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', ...)

Ответ 2

Если вы используете PHPMyAdmin Вы можете решить эту проблему, выполнив следующие действия:

ПРЕДОСТЕРЕЖЕНИЕ: не используйте это решение, если хотите сохранить существующие записей в вашей таблице.

Шаг 1: Выберите способ экспорта базы данных в пользовательский режим:

enter image description here

Шаг 2:. Не забудьте проверить таблицу усечения перед вставкой в ​​параметры создания данных:

enter image description here

Теперь вы можете успешно импортировать эту базу данных.

Ответ 3

Если вы пытаетесь заполнить таблицу с дампа SQL, убедитесь, что таблица, указанная в инструкциях "INSERT INTO" дампа, является той же, которую вы пытаетесь заполнить. Открытие "MyTable" и импорт с дампом SQL вызовет именно такую ​​ошибку, если дамп пытается поместить записи в "MyOtherTable", у которых уже могут быть записи.

Ответ 4

Проблема связана с вашим файлом - вы пытаетесь создать БД, используя копию - в верхней части вашего файла вы найдете что-то вроде этого:

СОЗДАТЬ БАЗА ДАННЫХ, ЕСЛИ НЕ СУЩЕСТВУЕТ *THE_NAME_OF_YOUR_DB* ПАРАМЕТР УСТАНОВКИ ПО УМОЛЧАНИЮ latin1 COLLATE latin1_general_ci; USE *THE_NAME_OF_YOUR_DB*;

и я уверен, что у вас уже есть БД с этим именем - В ОДНОМ СЕРДЕЛЕ - пожалуйста, проверьте. Просто измените имя ИЛИ УДАЛИТЕ ЭТУ ЛИНИЮ!

Ответ 5

Когда я получаю такую ​​ошибку, мне пришлось обновить тип данных с помощью надписи. Например, если у меня есть "крошечный int", измените его на "small int", ~ Нита

Ответ 6

Я только что столкнулся с одной и той же проблемой, но здесь это, похоже, исходило из того факта, что я объявил, что идентификационный столбец UNSigned и что в сочетании с ID-значением "0" (ноль) вызвал сбой импорта...

Итак, изменив значение каждого идентификатора (PK-column), который я объявил "0", и каждый соответствующий FK для нового значения, моя проблема была решена.

Ответ 7

Также проверьте свои триггеры.

Встречается это с историей таблицы триггера, который попытался вставить основную таблицу id в историю таблицы id вместо правильного hist-table. столбец source_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;

Ответ 8

Если у вас есть новая база данных, и вы делаете новый чистый импорт, проблема может быть связана со вставкой данных, которые содержат приращение '0', и это преобразуется в '1' с AUTO_INCREMENT и вызывает эту ошибку.

Мое решение было использовать в файле импорта SQL.

SET SESSION sql_mode='NO_AUTO_VALUE_ON_ZERO';