2012-01-09 14 views
0

CSVのリストを古い値から新しい値に更新するためのコードを以下に示します。しかし、それは一部の製品のためのエラーをトリガー:MagentoのCSVからSKUを更新する - 整合性制約違反:1062エラー

は、Magentoのから製品を取得できません:SQLSTATE [23000]:整合性制約違反:1062重複したエントリ '168-122-1-7' キー1

include_once '../app/Mage.php'; 
    Mage::app(); 

    $updates_file="/home/varsityk/public_html/csvs/sku2sku.csv"; 

    $sku_entry=array(); 

    $updates_handle=fopen($updates_file, 'r'); 
    if($updates_handle) { 
     while($sku_entry=fgetcsv($updates_handle, 1000, ",")) { 
      $old_sku=$sku_entry[0]; 
      $new_sku=$sku_entry[1]; 
      echo "<br>Updating ".$old_sku." to ".$new_sku." - "; 
      try { 
       $get_item = Mage::getModel('catalog/product')->loadByAttribute('sku', $old_sku); 

       if ($get_item) { 
        $get_item->setSku($new_sku)->save(); 
        echo "successful"; 
       } else { 
        echo "item not found"; 
       } 
      } catch (Exception $e) { 
       echo "Cannot retrieve products from Magento: ".$e->getMessage()."<br>"; 
       return; 
      } 
     } 
    } 

    fclose($updates_handle); 

答えて

1

正確にこれを追跡するためにあなたのポストに十分な情報はありません。 Magentoに製品情報を保存すると、情報を更新する必要がある複数のテーブルがあります。これらのテーブルの一つが、何らかの理由で、あなたのシステムが

Integrity constraint violation: 1062 Duplicate entry '168-122-1-7' for key 1 

あなたがする必要がある別の行と重複してそのキーに4つの列を引き起こす、その情報を更新しようとしている4列の一意のキーを持っていますこれがどのテーブルであるかを把握し、Magentoがなぜこのアップデートで救済できるのかを理解してください。これを行う最も簡単な方法は、見た目を追加することです。

lib/Zend/Db/Adapter/Abstract.php 

これは、ほとんどのデータベースクエリがMagentoでルーティングされるクラスです。ログをupdateおよびinsertメソッドに追加します。 SQL文字列は、代わりにこのロギングで

$sql = "UPDATE " 
     . $this->quoteIdentifier($table, true) 
     . ' SET ' . implode(', ', $set) 
     . (($where) ? " WHERE $where" : ''); 


    $sql = "INSERT INTO " 
     . $this->quoteIdentifier($table, true) 
     . ' (' . implode(', ', $cols) . ') ' 
     . 'VALUES (' . implode(', ', $vals) . ')'; 

を作成されたスポットを探し、あなたはあなたが必要な情報を与える必要があり、その例外をスローする前に最後のMagentoのは、挿入しようとしたテーブルまたは更新を知っていますよトラブルシューティングを行います。

+0

こんにちは、おかげで私が手にエラーがある: は、Magentoのから製品を取得できません:SQLSTATE [23000]:整合性制約違反:1452は、子行を追加または更新できません:外部キー制約が失敗した( '個人用サイト/ mg_catalog_product_entity'、 CONSTRAINT 'FK_CATALOG_PRODUCT_ENTITY_ATTRIBUTE_SET_ID'外部キー(' attribute_set_id')REFERENCES 'mg_eav_attribute_set'(' attribute_set_id')ON) – user398894