I have a databse problem where i get Integrity constraint violation: 1062. I tried some things on my own but it didtn work so now i am asking you guys to see if you people can help me out.
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));
}
when i run this the first INSERT INTO doesnt fill in any data and giving this error: Integrity constraint violation: 1062 Duplicate entry '1' for key 'PRIMARY' there already is a primary 1 key in there. but it is on auto increment. in the tekst tabel the item_id gets an 0 input.
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>
Hope someone can help me on here. already alot of thanks in advance. :)
You really don't have a duplicate in your db. That is mysql db error...all you need to do is that, if you do your insertion and it is not true, just alter one of the columns of your table you want to insert into either from varchar to text or bigint and then redo the insertion. That will solve the problem.
When creating a primary key or unique constraint after loading the data, you can get a “Duplicate entry for key 'PRIMARY'” error. If the data in the source database is valid and there are no any duplicates you should check which collation is used in your MySQL database.
Duplicate records in SQL, also known as duplicate rows, are identical rows in an SQL table. This means, for a pair of duplicate records, the values in each column coincide. Usually, we will retrieve duplicate data, when we are joining tables.
When inserting into a table with an auto increment field, the auto increment field itself should not be specified at all.
Query("INSERT INTO prod_categorie (categorieID, parentID) VALUES (?, ?)", array($chkParent, $txtParentCategorie));
^^^^^^^^^^^ ^ ^^^^^^^^^^
Should be just
Query("INSERT INTO prod_categorie (parentID) VALUES (?)", array($txtParentCategorie));
Just added as answer from comment discussion to allow accept and finishing the question.
in my case the error is:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '0' for key 'PRIMARY'
the solution is to Empty/Truncate all records of the table in question
The problem happens when auto-increment is disabled on the primary-key of that table or the data-type is wrong.
partially credited to https://magento.stackexchange.com/questions/56354/admin-error-sqlstate23000-integrity-constraint-violation-1062-duplicate-ent
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With