1

XML フィードから Magento 1.7.0.2 に製品をプログラム的にインポートしています。

スクリプトは 1 週間の大半を正常に実行しましたが、現在、製品の保存時に以下に示すエラーが発生しています。

このエラーはどれほど深刻ですか?何が原因でしょうか?

すべてのインデックスを再作成し、一連のテーブルを切り捨てようとしましたが、エラーが続くようです。

エラー:

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '51-1' for key 'UNQ_CATALOGINVENTORY_STOCK_ITEM_PRODUCT_ID_STOCK_ID'

PHP のインポート (サンプル):

$sProduct = $this->_productModel;       
$sProduct->setTypeId($this->_productTypeSimple)
  ->setWebsiteIds(array(1))
  ->setStatus($this->_productStatusDisabled)
  ->setVisibility($this->_productVisibilityNotVisible)
  ->setTaxClassId(2) //Taxable Good
  ->setAttributeSetId(XML_FEED_PRODUCT_ATTRIBUTE_SET)
  ->setSku($arrayProductData['ProductSKU']) 
  ->setName($arrayProductData['ProductName'])
  ->setShortDescription($arrayProductData['ProductShortDescription'])
  ->setDescription($arrayProductData['ProductLongDescription'])
  ->setPrice(sprintf("%0.2f", $arrayProductData['ProductPrice']))   
  ->setRRP(sprintf("%0.2f", $arrayProductData['ProductPrice'])) 
  ->setWeight(0)    
  ->setCategoryIds($arrayProductData['ProductCategories'])
  ->setUrlKey(str_replace(array(" ","'","&"),"-",$arrayProductData['ProductName']) . "-" . $arrayProductData['ProductSKU']);

$sProduct->setStockData(
  array( 
    'use_config_manage_stock' => 1,
    'is_in_stock' =>1, 
    'qty' => $arrayProductData['ProductStockQty'] 
  )
);

$sProduct->setMetaTitle($arrayProductData['ProductName'])
->setMetaDescription(str_replace("<<THE_PRODUCT>>",$arrayProductData['ProductName'], DEFAULT_META_DESC));           

if(isset($arrayProductData['ProductSize'])) {
  $sProduct->setData("sizes", $arrayProductData['ProductSize']);
}

if(isset($arrayProductData['ProductColour'])) {
  $sProduct->setData("color", $arrayProductData['ProductColour']);
}
try {
  $sProduct->save();            
}
catch (Mage_Core_Exception $e) {
  echo $e->getMessage();
}

ご覧いただきありがとうございます。

4

2 に答える 2

0

エラーが示すように

UNQ_CATALOGINVENTORY_STOCK_ITEM_PRODUCT_ID_STOCK_ID

同じproduct_id/stock_idのDBテーブル(cataloginventory_stock_item)に重複するエントリがあります

これはさまざまな理由で発生する可能性があります

これを解決するには、保存する前に製品のIDを手動で設定して、競合しないようにします。これにより、最後の製品IDを取得してインクリメントします。

または、保存する前に、この新製品に関連する行をテーブルから削除します

于 2012-11-25T06:35:42.633 に答える
0

スクリプトのさらに下では、特定の基準に基づいて構成可能な製品を作成していました。

この構成可能な製品の SKU が一意ではないようで、上記の問題が発生していることをまだ明らかにしていません。

とにかくありがとう。

于 2012-11-25T16:39:24.000 に答える