2013-10-14 6 views
11

무결성 제약 조건 위반이 발생하는 데이터베이스 문제가 있습니다. 내 자신 만의 일을 시도했지만 지금은 물어 봅니다. 사람들이 나를 도와 줄 수 있는지 알아봐.무결성 제약 조건 위반 : 1062 키 'PRIMARY'에 대한 중복 항목 '1'

elseif($action == 'add') { 
if($_POST['create'] == true) { 
    $title = $_POST['txtTitle']; 
    $txtParentCategorie = $_POST['txtParentCategorie']; 
    $txtContent = $_POST['txtContent']; 

    if($txtParentCategorie == "niks") { 
     $txtParentCategorie = NULL; 
     $chkParent = 1; 
     $order_count = countQuery("SELECT categorieID FROM prod_categorie WHERE parentID=?",array(1)); 
     $order = $order_count + 1; 
    } else { 
     $chkParent = null; 
     $order_count = countQuery("SELECT categorieID FROM prod_categorie WHERE parentID is not NULL"); 
     $order = $order_count + 1; 
    } 

    Query("INSERT INTO prod_categorie (categorieID, parentID) VALUES (?, ?)", array($chkParent, $txtParentCategorie)); 
    $inserted_id = getLastInsertId(); 
    Query("INSERT INTO tekst (tabel, kolom, item_id, tekst, taalID) VALUES(?, ?, ?, ?, ?)", array('prod_categorie', 'categoriename', $inserted_id, $title, $lang)); 
    Query("INSERT INTO tekst (tabel, kolom, item_id, tekst, taalID) VALUES(?, ?, ?, ?, ?)", array('prod_categorie', 'content', $inserted_id, $txtContent, $lang)); 
    $languages = selectQuery("SELECT taalID FROM taal WHERE taalID!=?",array($lang)); 
} 

내가 나던 INTO이 첫 번째 INSERT는 데이터를 입력하고이 오류를주고 실행하면 무결성 제약 조건 위반 : 1062 중복 항목을 '1'키 'PRIMARY' 이미 거기에 대한 것은에서 주 1 열쇠이다 그곳에. 하지만 자동 증가합니다. 텍스트 테이블에있는 은 item_id가 0 입력을 가져옵니다.

자바 스크립트 :

$('.btnAddCategorie').click(function(){ 
    if(busy != 1){ 
     busy = 1; 
     var error = 0; 
     var gallery = $('select[name="gallery_dropdown"]').val(); 
     if($('input[name="txtTitle"]').val() == ''){ 
      error = 1; 
      alert('Het titel veld is nog leeg'); 
      $('input[name="txtTitle"]').focus(); 
     } 
     if(error != 1){ 
      $('.content_load_icon').html('<img src="../../includes/images/layout/load_small.gif" />'); 
      var content = $('#cke_ckeditor').children().children().children()[3].contentWindow.document.childNodes[1].childNodes[1].innerHTML; 
      $.ajax({ 
       url: '../../action/ac_productbeheer.php?a=add', 
       type: 'POST', 
       data: {txtTitle: $('input[name="txtTitle"]').val(), txtForm: $('select[name="txtForm"]').val(), customGalTitle: $('.txtCustomGalleryTitle').val(), gallery_dropdown: gallery, txtParentCategorie: $('select[name="txtParentCategorie"]').val(), txtContent: content, txtMeta: $('.txtMetaDesc').val(), create: true}, 
       success: function(data, textStatus, xhr) { 
        $('.content_load_icon').html(''); 
        $('.txtContentConsole').html('Product succesvol opgeslagen!').show().delay(2000).fadeOut(200); 
        busy = 0; 
        saved = 1; 
        window.location = '../../modules/productbeheer/index.php'; 
       }, 
       error: function(xhr, textStatus, errorThrown) { 
        $('.content_load_icon').html(''); 
        $('.txtContentConsole').html('Fout bij opslaan! Probeer het later nog een keer.').show().delay(2000).fadeOut(200); 
        busy = 0; 
       } 
      }); 
     } else { 
      error = 0; 
      busy = 0; 
     } 
    } 
}); 

HTML : 누군가가 나를 여기에 도움이 될 수 있습니다

<a class="btnAddCategorie"><img name="btnOpslaan" src="/'.CMS_ROOT.'/includes/images/layout/opslaan.png" /></a><span class="content_load_icon"></span><span class="txtContentConsole"></span> 

희망. 미리 감사드립니다. :)

+1

문제의 테이블에 대한 create 문을 표시하지 않으면 도움을 드릴 수 없습니다. –

+1

3 개의 인서트가 있습니다. 어느 것이 실패하고 있는지 말할 수 있습니까? – asantaballa

+1

기본 키에 값을 삽입하려고합니까? 만약 그렇다면 (텍스트 테이블에서 item_id는 0 입력을 얻습니다.) -> 또한 테이블 정의를 게시하십시오 – AgRizzo

답변

11

자동 증가 필드가있는 테이블에 삽입 할 때 자동 증가 필드 자체를 지정하면 안됩니다.

Query("INSERT INTO prod_categorie (categorieID, parentID) VALUES (?, ?)", array($chkParent, $txtParentCategorie)); 
            ^^^^^^^^^^^     ^   ^^^^^^^^^^ 

는 수락하고 질문을 마무리 할 수 ​​있도록 주석 토론에서 불과

Query("INSERT INTO prod_categorie (parentID) VALUES (?)", array($txtParentCategorie)); 

그냥 대답으로 추가 작아야합니다.

1

나는 똑같은 문제가 있었는데, 그 원인이되는 자동 증가가 아니었다. 내 테이블 ID의 데이터 유형을 TINYINT(3)에서 INT(10)으로 변경했습니다. 시도해 봐. 아마도 도움이 될 것입니다. 내 경우에는

+0

이 답변에 대한 유효성을 확인하는 것은 제 문제였습니다. 내 테이블에'auto_increment'가 설정되어 있고 기본 키를 지정하지 않았지만 여전히 오류가 발생했습니다. Saw 내 필드 유형이'int' 대신'tinyint'로 설정되었습니다. 이 대답은 나를 도왔다. 고마워! – ckpepper02

5

오류는 다음과 같습니다

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '0' for key 'PRIMARY'

해결책은 문제의 테이블의 빈/잘라 내기 모든 기록이다

자동 증가가에서 사용할 때 문제가 발생 해당 테이블 또는 데이터 유형의 기본 키가 잘못되었습니다. Yes (예)로 설정 구글 실험과 젠토 2를 사용하는 경우

가 부분적으로 https://magento.stackexchange.com/questions/56354/admin-error-sqlstate23000-integrity-constraint-violation-1062-duplicate-ent

0

에 적립 나는이 문제를 건너 왔어요. 단순히 종료하여 내 페이지 저장 문제를 해결했습니다. 계속 카탈로그 제품을 추가하는 데 문제가 발생하면 지정된 상점의 URL 키가 이미 존재한다는 오류가 발생합니다. 올바른 폴더 권한이 있어도 이미지가 업로드되지 않습니다. 다른 사람에게 도움이 될 수 있도록 업데이트를 게시합니다.

+0

안녕하세요, 조슈아, 그냥 (만약 당신이 이미 확인하지 않은 경우) 나는 아주 비슷한 문제를 받고 있었고 내'catalog_product_entity_int' 테이블이'int' 타입의 가장 큰 값에 도달했기 때문에 새로운 단순한 제품을 만들려고 할 때 재미있는 일들. 내가하고있는 일이 'Magento 1'이라고 이해하고 있지만 원칙은 동일합니다. 문제는 기본 데이터 유형 제약입니다. –