2013-10-14 8 views
11

Ich habe ein Datenbankproblem, bei dem ich Integritätseinschränkungsverletzung erhalte: 1062. Ich habe einige Dinge ausprobiert, aber es hat nicht funktioniert, jetzt frage ich dich Leute, um zu sehen, ob ihr mir helfen könnt.Integritätseinschränkungsverletzung: 1062 Doppelter Eintrag '1' für Schlüssel 'PRIMARY'

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)); 
} 

wenn i laufe dies die erste INSERT INTO leider nicht in irgendwelchen Daten füllen und diesen Fehler geben: Integrität-Randbedingungsverletzung: 1062 doppelte Eintrag ‚1‘ für die Taste ‚primären‘ gab es bereits eine primäre Taste 1 in Dort. aber es ist auf automatischem Zuwachs. in der Tekst-Tabelle erhält die item_id einen 0-Eingang.

Javascript:

$('.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> 

Hoffnung mir hier jemand helfen kann, auf. schon viel Dank im Voraus. :)

+1

Wir können Ihnen nicht helfen, es sei denn, Sie zeigen uns die create-Anweisung für die fragliche Tabelle. –

+1

Sie haben drei Einsätze. Kannst du sagen, welcher fehlschlägt? – asantaballa

+1

Versuchen Sie, einen Wert in Ihren Primärschlüssel einzufügen? Wenn ja - nicht (in der Tekst-Tabelle erhält die item_id eine 0-Eingabe.) -> Veröffentlichen Sie auch Ihre Tabellendefinition – AgRizzo

Antwort

11

Beim Einfügen in eine Tabelle mit einem Auto-Inkrement-Feld sollte das Auto-Inkrement-Feld selbst überhaupt nicht angegeben werden.

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

Sollte nur

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

Just added als Antwort Kommentar Diskussion sein, die Frage zu ermöglichen, übernehmen und beenden.

1

Ich hatte das gleiche Problem, und es war nicht das automatische Inkrement, das es verursacht hat. Ich habe den Datentyp in meiner Tabellen-ID von TINYINT(3) in INT(10) geändert. Versuch das. Vielleicht wird es helfen.

+0

Nur um diese Antwort zu bestätigen, das war mein Problem. Meine Tabelle hatte 'auto_increment' gesetzt und ich habe den Primärschlüssel nicht angegeben, aber ich bekam immer noch den Fehler. Saw mein Feldtyp wurde auf "Tinyint" statt "Int" gesetzt. Diese Antwort hat mir geholfen, danke! – ckpepper02

5

in meinem Fall ist der Fehler:

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

die Lösung auf Leer-/Kürzen alle Datensätze der Tabelle in Frage

Das Problem tritt auf, wenn Autoinkrement auf deaktiviert der Primärschlüssel dieser Tabelle oder der Datentyp ist falsch.

teilweise gutgeschrieben https://magento.stackexchange.com/questions/56354/admin-error-sqlstate23000-integrity-constraint-violation-1062-duplicate-ent

0

ich auf dieses Problem kam, als Magento 2 mit dem Experiment auf Ja Google verwenden. Durch einfaches Ausschalten wurde mein Problem mit der Seitenspeicherung behoben. Es gibt immer noch ein Problem mit dem Hinzufügen von Katalogprodukten, aber es gibt einen Fehler, dass der URL-Schlüssel für das angegebene Geschäft bereits existiert. und das Bild wird nicht hochgeladen, obwohl ich korrekte Ordnerberechtigungen habe. Wird ein Update veröffentlichen, falls es anderen hilft.

+0

Hallo Joshua, Ich dachte nur, ich könnte hinzufügen (wenn Sie noch nicht überprüft haben) Ich bekam ein sehr ähnliches Problem und es stellte sich heraus, dass meine 'catalog_product_entity_int' Tabelle den größten Wert des' int' Typs erreicht hatte lustige Dinge, als ich versuchte, ein neues einfaches Produkt zu erstellen. Ich verstehe, woran ich arbeite, ist "Magento 1", aber das Prinzip ist das gleiche, vielleicht ist das Problem eine zugrunde liegende Datentypbeschränkung. –

Verwandte Themen