2011-12-08 17 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值; –