2012-04-14 89 views
2

![1062重複條目] [2] 在Magento的產品創建代碼,添加自己的自定義代碼在/htdocs/magento/app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php我有使外部連接mysql &使用在自定義表中插入產品ID & SKU(我知道這是不推薦的方式,但只是用於測試目的,我這樣做。)Magento產品創建錯誤... SQLSTATE [23000]:完整性約束違規:1062重複條目?

我的代碼 - :

public function saveAction() 
{ 
     $storeId  = $this->getRequest()->getParam('store'); 
     $redirectBack = $this->getRequest()->getParam('back', false); 
     $productId  = $this->getRequest()->getParam('id'); 
     $isEdit   = (int)($this->getRequest()->getParam('id') != null); 

     $data = $this->getRequest()->getPost(); 
     if ($data) { 
      if (!isset($data['product']['stock_data']['use_config_manage_stock'])) { 
       $data['product']['stock_data']['use_config_manage_stock'] = 0; 
      } 
      $product = $this->_initProductSave(); 

      try { 
       $product->save(); 
       $productId = $product->getId(); 
//-------My code start--------------------------------- 
    $db_name = "magento"; 
      $con = mysql_connect ("www.xyz.com", "magento", "password"); 
      If(!$con) 
    { 
     die('Could not connect: ' . mysql_error()); 
     mysql_close($con); 
    } 
    $seldb = mysql_select_db($db_name, $con); 

    $query_fetch = "SELECT cpe.entity_id, cpe.sku FROM catalog_product_entity cpe 
       WHERE cpe.entity_id = ".$productId; 

    $result_query_fetch = mysql_query($query_fetch); 
    while($row = mysql_fetch_array($result_query_fetch)) 
    { 
     $entity_id = ($row["entity_id"]); 
     $sku = ($row["sku"]);   
     $result_fetch = "$entity_id".",'".$sku."'"; 
    } 

     $query_insert = "INSERT into product_creation(entity_id,sku,creation_date) VALUES(".$result_fetch.", NOW())"; 
    $result_insert = mysql_query($query_insert); 

    mysql_close($con); 
    //--------------------------My code End----------------------------------------- 

       /** 
       * Do copying data to stores 
       */ 
       if (isset($data['copy_to_stores'])) { 
        foreach ($data['copy_to_stores'] as $storeTo=>$storeFrom) { 
         $newProduct = Mage::getModel('catalog/product') 
          ->setStoreId($storeFrom) 
          ->load($productId) 
          ->setStoreId($storeTo) 
          ->save(); 
        } 
       } 


       Mage::getModel('catalogrule/rule')->applyAllRulesToProduct($productId); 

       $this->_getSession()->addSuccess($this->__('The product has been saved.')); 


      } 
      catch (Mage_Core_Exception $e) { 
       $this->_getSession()->addError($e->getMessage()) 
        ->setProductData($data); 
       $redirectBack = true; 
      } 
      catch (Exception $e) { 
       Mage::logException($e); 
       $this->_getSession()->addError($e->getMessage()); 
       $redirectBack = true; 
      } 
     } 

     if ($redirectBack) { 
      $this->_redirect('*/*/edit', array(
       'id' => $productId, 
       '_current'=>true 
      )); 
     } 
     else if($this->getRequest()->getParam('popup')) { 
      $this->_redirect('*/*/created', array(
       '_current' => true, 
       'id'   => $productId, 
       'edit'  => $isEdit 
      )); 
     } 
     else { 
      $this->_redirect('*/*/', array('store'=>$storeId)); 
     } 
    } 

所以從這段代碼,產品數據被插入到兩個表中,但我是得到錯誤作爲

SQLSTATE [23000]:完整性約束衝突:關鍵 'IDX_STOCK_PRODUCT'

可有人plz幫助我解決這個問題,1062重複項 '1949-1' ......

解決方案我tried-:

-remove在/ var /緩存&在/ var /會話

- 清除瀏覽器緩存&餅乾

- 在應用程序的/ etc/config.xml中,改變這種

SET NAMES UTF8 這個

SET NAMES UTF8; SET FOREIGN_KEY_CHECKS = 0; SET UNIQUE_CHECKS = 0;

仍然有相同的錯誤...或者PLZ告訴我,我應該改變我的代碼?

PS-我知道,這是不推薦的方式,我改變核心文件的代碼&也使用外部連接,而不是使用Zend連接...但它只是用於測試目的...

是有沒有解決這個問題的方法?

plz幫助我...

回答

1

的錯誤是你的問題是什麼很清楚: 你有一個獨特的鍵約束IDX_STOCK_PRODUCT並且已經有一個記錄,在任何列值「1949-1」說關鍵封面。

+0

plz建議我解決一些問題......我該怎麼辦? – Prat 2012-04-14 12:31:49

+0

請勿插入重複項。 – 2012-04-14 12:32:08

+0

你的意思是說,我不能通過這種方式在定製表中插入數據... – Prat 2012-04-14 12:34:01

相關問題