保存产品时出现外键约束错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了保存产品时出现外键约束错误相关的知识,希望对你有一定的参考价值。

$product = Mage::getModel('catalog/product');
            // Build the product
            $product->setStoreID($store_id);//Store Id
                   $product ->setTotalrooms($post['room'])//No of roms avaliable
                    ->setSku($sku)//product Sku
                    ->setUserid($CusId)//Customer id
                    ->setAttributeSetId(4)
                    ->setTypeId('property')//product type
                    ->setName($post['name'])//propertyName
                    ->setDescription($post['desc'])//Description
                    ->setShortDescription($post['sdesc'])//shortdescription
                    ->setPrice($post['price']) // Set some price
                    ->setAccomodates($post['accomodate'])//Custom created and assigned attributes
                    ->setHostemail($CusEmail)//host email id
                    ->setpropertyadd($post['address'])// property address
                    ->setAmenity($amenity)//amenity like room service,e.t.c
                    ->setState($post['state'])//property state name
                    ->setCity($post['city'])// property city name
                    ->setCountry($post['propcountry'])//country
                    ->setCancelpolicy($post['cancelpolicy'])//regarding to cancelation policy
                    ->setPets($post['pets'])//regaring to pets allowed or not allowed
                    ->setBedtype($post['bedtype'])//bedtype
                    ->setMaplocation($post['map'])//property map location
                    ->setMetaTitle($post['meta_title'])//Meta title
                    ->setMetaKeyword($post['meta_keyword'])//Meta keywords
                    ->setMetaDescription($post['meta_description'])//Meta description
                    ->setPropertytype(array($post['proptype']))//property type
                    ->setPrivacy(array($post['privacy']))//privacy
                    ->setCategoryIds(Mage::app()->getStore()->getRootCategoryId())//Default Category
                    ->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH)//Visibility in both catalog and search
                    ->setStatus(1)//enable the Status
                    ->setTaxClassId(0) # My default tax class
                    ->setStockData(array(
                        'is_in_stock' => 1,
                        'qty' => 100000
                    ))//Inventory
                    ->setCreatedAt(strtotime('now'))
                    ->setWebsiteIDs(array($websiteId)); //Website id, my is 1 (default frontend)
           try {
                    $product->save();
                }
                catch (Exception $ex) {
                    echo $ex->getMessage();
                    exit();
                }

当我保存产品时,它会显示如下错误:

a:5:{i:0; s:313:“SQLSTATE [23000]:完整性约束违规:1452无法添加或更新子行:外键约束失败(glampeu_mage1.mage_catalog_product_entity,CONSTRAINT FK_GALI_CAT_PRD_ENTT_ATTR_SET_ID_GALI_EAV_ATTR_SET_ATTR_SET_ID FOREIGN KEY(attribute_set_id)参考mage_eav_attribute_set)“; i:1; s:2463:”#0 /lib/Varien/Db/Statement/Pdo/mysql.php(110):Zend_Db_Statement_Pdo - > _ execute(Array)

任何人都可以帮我纠正这个问题吗?

答案

您似乎没有使用attribute_set_id = 4设置属性,因此无法插入或更新新产品。检查你的表mage_eav_attribute_set以查看它是否为真。

另一答案

检查数据库中的密钥,可能存在问题,有时会在更新magento后发生。

另一答案

试试这段代码

try {
   //$product->save(); //this method re-trigger all save events
   $product->getResource()->save($product);
}
catch (Exception $ex) {
   echo $ex->getMessage();
   exit();
}
另一答案

检查你的attribute_set_id是否合适。

另一答案

这条线应该有一个大写字母P.

->setpropertyadd($post['address'])// property address

所以它应该是

->setPropertyadd($post['address'])// property address
另一答案

社区和企业似乎有点不同,

在社区,$ product-> save();将在Enterprise,$ product-> getResource() - > save($ product);作品。

使用后者时,社区似乎不会抛出任何约束错误,但企业会这样做。

以上是关于保存产品时出现外键约束错误的主要内容,如果未能解决你的问题,请参考以下文章

在子表 Laravel 中插入数据时出现外键问题

在 mysql 表上添加外键约束时出现错误 1005

在 Django 中实现外键子集

SQLSTATE [HY000] Laravel 8 中的外键约束格式错误

如何在继承类postgresql上实现外键

有外键约束的子表插入数据时出现的错误