2013-10-14 2 views
11

У меня проблема с базой данных, где я получаю нарушение ограничений целостности: 1062. Я пробовал некоторые вещи самостоятельно, но он didtn работал так, теперь я спрашиваю вас ребята, чтобы посмотреть, могут ли вы помочь мне.Нарушение ограничения целостности: 1062 Дублируемая запись '1' для ключа '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)); 
} 

, когда я запускаю это первый INSERT INTO оленьей кожи заполнение любых данных и дает эту ошибку: Integrity нарушение ограничения: 1062 Дублированный запись «1» для ключа «PRIMARY» уже существует первичный ключ 1 в там. но он находится на автоматическом приращении. В столбце tekst item_id получает вход 0.

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> 

Надежда кто-то может помочь мне здесь. уже много благодарны. :)

+1

Мы не можем помочь вам, если вы не указали нам инструкцию create для рассматриваемой таблицы. –

+1

У вас есть три вставки. Можете ли вы сказать, какой из них терпит неудачу? – asantaballa

+1

Вы пытаетесь вставить значение в свой первичный ключ? Если это так - не нужно (в тексте tab_ 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

У меня была такая же проблема, и это было не автоматическое приращение, которое вызывало это. Я изменил тип данных на своем идентификаторе таблицы от TINYINT(3) до INT(10). Попробуй это. Может быть, это поможет.

+0

Чтобы дать некоторую валидацию этому ответу, это была моя проблема. В моей таблице был параметр auto_increment, и я не указывал первичный ключ, но я все еще получал ошибку. У меня мой тип поля был установлен на 'tinyint' вместо' int'. Этот ответ помог мне, спасибо! – ckpepper02

5

в моем случае ошибка:

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

решением является пустых/усечь все записи таблицы в вопросе

Проблема происходит, когда автоприращения отключено первичный ключ этой таблицы или тип данных неверен.

частично зачислена на https://magento.stackexchange.com/questions/56354/admin-error-sqlstate23000-integrity-constraint-violation-1062-duplicate-ent

0

Я наткнулся на эту проблему при использовании Magento 2 с экспериментом Google установлен в Yes. Просто отключив его, я решил проблему с сохранением страницы. У вас все еще проблема с добавлением продуктов каталога, это дает мне ошибку, что URL-адрес ключа для указанного хранилища уже существует. и изображение не загружается, даже если у меня есть правильные разрешения на доступ к папке. Опубликует обновление, если оно поможет кому-либо еще.

+0

Hi Joshua, Просто подумал, что могу добавить (если вы еще не проверили), я получал очень похожую проблему, и оказалось, что моя таблица 'catalog_product_entity_int' достигла наибольшего значения типа' int' и поэтому когда я пытался создать новый простой продукт. Я понимаю, что я работаю, это «Magento 1», но принцип тот же, может быть, проблема - это основное ограничение типа данных. –

Смежные вопросы

 Смежные вопросы