2011-12-08 3 views
0

MySQL 테이블에 이상한 문제가 있습니다. 새 행을 삽입하려고하면 기본 키가 중복 된 것입니다. 내 기본 키는 자동 증분이며 내 쿼리 내에서 설정되지 않습니다 (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"]." 
    ) 

가)

+1

당신이 당신의 쿼리를 작성 해달라고하면 우리가 당신을 도울 수 귀하의 요청에 – Johann

+0

을 게시하시기 바랍니다 ... –

+0

같은 그것은 지금 게시 됨 –

답변

0

그럼 내가 그 시간에 생각하는 당신 자동 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.. 
+0

기본 키는 자동 증분 –

+0

입니다 테이블 syntex는 DROP TABLE IF EXISTS'Table'과 같습니다. CREATE TABLE'Table' ( 'Id' INT (10) 부호 NOT NULL AUTO_INCREMENT, 'Name'의 VARCHAR (45) NULL NOT, PRIMARY KEY ('Id') ) ENGINE = 이노 DEFAULT CHARSET = 라틴; –

+0

테이블에서 AUTO_INCREMENT = 1647을 사용했습니다. 테이블 데이터에 1647보다 큰 ID가 포함되지 않았는지 확인하십시오. 그렇지 않으면 테이블 구조가 정상입니다. 'articles_mvt'에서 Max (id)를 선택하는 것과 같은 쿼리를 사용하여 최대 id 값을 확인하십시오. –

관련 문제