MySQL在未显示密钥上复制主键

时间:2011-12-08 09:29:08

标签: mysql duplicates

我在MySQL表上遇到了一个奇怪的问题。尝试插入新行时,它表示主键是重复的。我的主键是自动增量,不在我的查询中设置(由MySQL自动设置)。

问题是我在一个甚至不存在的密钥上出现“重复主键”错误(我检查过)。我解决了增加当前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 :(得分:0)

我认为当时你没有检查主键上的auto Inc标志。因此,当您尝试输入时,值为0,插入主键,第二个输入则出错。像那样

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

或者您可以尝试插入ID已存在的行,如

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