MySQL Дублируйте первичный ключ на несуществующий ключ - PullRequest
0 голосов
/ 08 декабря 2011

У меня странная проблема на MySQL столе. При попытке вставить новую строку, он говорит, что первичный ключ является дубликатом. Мой первичный ключ является автоинкрементным и не задается в моем запросе (автоматически устанавливается MySQL).

Проблема в том, что я получаю сообщение об ошибке "Duplicate primary key" на ключе, который даже не существует (я проверял). Я решил проблему увеличения текущего значения auto_increment, но не могу понять, как это произошло.

Любая помощь будет великолепна.

Редактировать

Создание таблицы

CREATE TABLE `articles_mvt` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `ext_article_id` int(5) NOT NULL,
  `date_mvt` date NOT NULL,
  `qte` float(4,2) NOT NULL,
  `in_out` enum('in','out') NOT NULL,
  `ext_nateco_id` int(5) NOT NULL,
  `ext_agent_id` int(5) NOT NULL COMMENT 'Demandeur',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1647 ;

Проблемный запрос

INSERT INTO articles_mvt (
        `ext_article_id`,
        `date_mvt`,
        `qte`,
        `in_out`,
        `ext_nateco_id`,
        `ext_agent_id`
    )
    VALUES (
        '".$_POST["numArticle"]."',
        '".dateSql($_POST["date_mvt"])."',
        ".$_POST["qte_entier"].".".$_POST["qte_virgule"].",
        '".$_POST["in_out"]."',
        ".$_POST["numNateco"].",
        ".$_POST["demandeur"]."
    )

Переменные FYI санированы ранее в коде;)

1 Ответ

0 голосов
/ 08 декабря 2011

Ну, я думаю, в то время вы не проверяли флаг Auto Inc на первичном ключе.Поэтому, когда вы пытаетесь ввести, значение 0 вставляется в первичный ключ и для второго ввода выдает ошибку.вот так

ID Value 
0   A    ok it not give error
0  ff    it gives error..

Или вы можете попытаться вставить строку, идентификатор которой уже существует, например

ID Value 
11   A    ok it not give error
11  ff    it gives error..
...