我有一个数据库问题,我得到完整性约束违规:1062。 我自己尝试了一些东西,但它确实有效,所以现在我要求你们看看你们是否能帮助我。
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不会填写任何数据并给出此错误: 完整性约束违规:1062密钥'PRIMARY'的重复条目'1' 那里已经有一个主要的1键。但它是自动增量。 在tekst tabel中,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>
希望有人可以帮助我。 已经很多人提前感谢了。 :)
答案 0 :(得分:14)
当插入带有自动增量字段的表时,根本不应指定自动增量字段本身。
Query("INSERT INTO prod_categorie (categorieID, parentID) VALUES (?, ?)", array($chkParent, $txtParentCategorie));
^^^^^^^^^^^ ^ ^^^^^^^^^^
应该只是
Query("INSERT INTO prod_categorie (parentID) VALUES (?)", array($txtParentCategorie));
刚刚添加评论讨论的答案,以允许接受并完成问题。
答案 1 :(得分:6)
在我的情况下,错误是:
SQLSTATE [23000]:完整性约束违规:1062重复条目 键'PRIMARY'为'0'
解决方案是清空/截断相关表格的所有记录
在该表的主键上禁用自动增量或数据类型错误时会发生此问题。
答案 2 :(得分:3)
我遇到了同样的问题,并不是引起它的自动增量。我将表ID上的数据类型从TINYINT(3)
更改为INT(10)
。试试吧。也许它会帮助你。
答案 3 :(得分:0)
使用Magento 2并将Google Experiment设置为Yes时,我遇到了这个问题。只需将其关闭即可解决我的页面保存问题。如果添加目录产品仍然存在问题,则会给我一个错误,即指定商店的URL密钥已经存在。即使我有正确的文件夹权限,图像也不会上传。将发布更新,以防其他任何人。
答案 4 :(得分:0)
我在使用 Http:put 和 Http:patch 时遇到了同样的问题。 所以问题出在我的算法上。
我试图在 hero table
中保存重复的 ID,请看:
public function updateHero(Request $request){
$id =hero::find($request->id);
if($id){
$theHero=new hero;
$theHero->id=$request->id;
$theHero->name=$request->name;
$theHero->save();
return response()->json("data updated", 200);
}
else{
return response()->json("No data updated", 401);
}
}
所以我删除了代码中的 $theHero->id=$request->id;
。
public function updateHero(Request $request){
$id =hero::find($request->id);
if($id){
$theHero=new hero;
$theHero->name=$request->name;
$theHero->save();
return response()->json("data updated", 200);
}
else{
return response()->json("No data updated", 401);
}
}