我在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变量在代码中早先被清理;)
答案 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..