Php 完整性约束冲突在Magento中创建产品
我试图从magento前端创建产品,但在执行php代码时,我收到以下错误:Php 完整性约束冲突在Magento中创建产品,php,sql,magento,exception,product,Php,Sql,Magento,Exception,Product,我试图从magento前端创建产品,但在执行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_ATT
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)
我在这里发现:属性集ID应该有问题,但我尝试从eav_attribute_set table强制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();
谢谢 外键约束错误基本上是由于您试图在引用表中不存在的列中输入值而导致的。在这种情况下-我将检查您尝试插入主表的值是否允许在辅助表中使用。请检查您是否设置了有效的
$attributeSetId
,如果Mage::getModel('catalog/config')->getAttributeSetId('catalog\u product','set\u evento')
成功返回了有效的ID
我也有同样的错误,设置了一个有效的属性集ID为我解决了这个问题。我在运行导入程序时遇到了同样的问题,我发现问题是我尝试更新的一些产品不存在。添加此代码对我有效
$productid = Mage::getModel('catalog/product')
->getIdBySku(trim($sku));
if(!$productid){
Mage::Log('Failed to load product with Sku:'.$sku,null,'cron.log');
return;
}
好的,那么您正试图输入到
catalog\u product\u entity
列中的值-它是否存在于eav\u attribute\u set
表中?