2011-12-08 18 views
0

我在MySQL表中遇到了一个奇怪的问题。当试图插入一个新行时,它说主键是重复的。我的主键是自动增量,并没有在我的查询中设置(由MySQL自动设置)。MySQL在备份密钥上复制主键

问题是我得到一个“重复的主键”错误,甚至不存在(我检查)的键。我解决了增加当前值的问题,但我无法理解它是如何发生的。

任何帮助将是伟大的。

编辑

创建表

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"]." 
    ) 

仅供参考变量出现在靠前的代码消毒;)

+1

请发表您的查询 – Johann

+0

我们不能帮你,如果你不发表您的查询... –

+0

现已发布 –

回答

0

嗯,我想这时候你没有检查汽车公司旗帜在主键上。所以当你尝试输入的时候,比如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.. 
+0

主键是自动增量 –

+0

是你的表syntex就是这样DROP TABLE IF EXISTS'Table'; CREATE TABLE'Table'( 'Id' INT(10)无符号NOT NULL AUTO_INCREMENT, 'Name' VARCHAR(45)NOT NULL, PRIMARY KEY('Id') )ENGINE = InnoDB的默认字符集= LATIN1; –

+0

你在表格中使用了AUTO_INCREMENT = 1647。请确保你的表格数据不包含大于1647的id。否则你的表格结构很好。只需从'articles_mvt'中使用查询来选择最大值(id)即可查看您的最大id值; –