![](/img/trans.png)
[英]magento Integrity Constraint Violation during product creation/update
[英]Integrity constraint violation creating Product in Magento
我正在嘗試從magento Frontend創建一個產品,但是當執行php代碼時,我收到此錯誤:
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`magento`.`catalog_product_entity`, CONSTRAINT `FK_CAT_PRD_ENTT_ATTR_SET_ID_EAV_ATTR_SET_ATTR_SET_ID` FOREIGN KEY (`attribute_set_id`) REFERENCES `eav_attribute_set` (`attribute_set_id`) ON DE)
我在這里找到: 從PHP創建一個產品 - Magento應該是屬性集ID的問題,但我嘗試從eav_attribute_set表強制ID,然后使用函數:
Mage::getModel('catalog/config')->getAttributeSetId('catalog_product','Set_evento')
並使用此功能,但具有“默認”值。 沒有什么變化。 那么問題可能不是屬性集ID?
這是我的代碼:
$product = Mage::getModel('catalog/product');
$product->setSku(time());
$product->setName("Evento senza nome");
$product->setDescription("123");
$product->setShortDescription("1234");
$product->setPrice(0.00);
$product->setTypeId('virtual');
$attributeSetId = Mage::getModel('catalog/config')->getAttributeSetId('catalog_product','Set_evento');
$product->setAttributeSetId($attributeSetId);
$product->setCategoryIds(array($cat_id));
$product->setVisibility(4); // catalog, search
$product->setStatus(1); // enabled
// assign product to the default website
$product->setWebsiteIds(array(Mage::app()->getStore(true)->getWebsite()->getId()));
// for stock
$stockData = $product->getStockData();
$stockData['qty'] = 1;
$stockData['is_in_stock'] = 1;
$product->setStockData($stockData);
$product->setCreatedAt(strtotime('now'));
Mage::app()->getStore()->setId(Mage_Core_Model_App::ADMIN_STORE_ID);
$product->save();
謝謝!
如果Mage::getModel('catalog/config')->getAttributeSetId('catalog_product','Set_evento')
成功返回了有效ID Mage::getModel('catalog/config')->getAttributeSetId('catalog_product','Set_evento')
請檢查是否設置了有效的$attributeSetId
。
我有同樣的錯誤,並設置有效的屬性集ID解決了我的問題。
基本上,外鍵約束錯誤是由於您嘗試在引用的表中不存在的列中輸入值而引起的。 在這種情況下 - 我會檢查您在輔助表中是否允許您嘗試插入主表的值。
我在運行導入程序時遇到了同樣的問題,我發現問題是我試圖更新的一些產品不存在添加此代碼對我有用。
$productid = Mage::getModel('catalog/product')
->getIdBySku(trim($sku));
if(!$productid){
Mage::Log('Failed to load product with Sku:'.$sku,null,'cron.log');
return;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.