2012-04-14 11 views
2

! [1062 Doppelter Eintrag] [2] In Magentos Produkt-Erstellungscode füge ich meinen eigenen benutzerdefinierten Code in /htdocs/magento/app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php I hinzu machen externe mySQL-Verbindung & verwenden, die Produkt-ID & sku in benutzerdefinierten Tabelle zum Einfügen (ich weiß, auf diese Weise wird nicht empfohlen, aber nur für Testzwecke ich dies tue.)Fehler beim Erstellen des Magento-Produkts ... SQLSTATE [23000]: Verletzung der Integritätsbedingung: 1062 Eintrag duplizieren?

Mein Code-.

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)); 
     } 
    } 

Also von diesem Code werden Produktdaten in beiden Tabellen eingefügt, aber ich bin Fehler immer als

SQLSTATE [23000]: Integrität Einschränkungsverletzung: 1062 doppelte Eintrag '1949-1' für Schlüssel 'IDX_STOCK_PRODUCT'

Kann jemand plz mir helfen, dieses Problem zu beheben ...

ich

Lösung tried-:

-remove/var/cache &/var/session

-clear Browser-Cache & Cookies

-Im app/etc/config.xml, This Unsere

SET NAMES utf8 utf8 zu

SET NAMES ändern; SET FOREIGN_KEY_CHECKS = 0; SET UNIQUE_CHECKS = 0;

Immer noch den gleichen Fehler ... Oder PLZ sagen mir, was soll ich in meinem Code ändern?

PS- Ich weiß, dass dies nicht Art und Weise wird empfohlen, da ich Code von Core-Dateien am Wechsel & auch externe Verbindung mit anstatt ZEND Verbindung ... aber es ist nur für Testzwecke ...

Ist Gibt es eine Lösung für dieses Problem?

plz help me ...

Antwort

1

Der Fehler ist ganz klar, was Ihr Problem ist: Sie haben eine eindeutige Schlüssel Einschränkung IDX_STOCK_PRODUCT und es gibt bereits einen Datensatz mit dem Wert ‚1949-1‘ in jeder Spalte, Schlüsselabdeckungen.

+0

plz schlage mir eine Lösung vor ... was soll ich tun? – Prat

+0

Keine Duplikate einfügen. –

+0

Ich meine, ich kann auf diese Weise keine Daten in eine benutzerdefinierte Tabelle einfügen ... – Prat

Verwandte Themen