【问题标题】:Magento Product Creation error...SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry?Magento 产品创建错误...SQLSTATE [23000]:完整性约束违规:1062 重复条目?
【发布时间】:2012-04-26 13:42:27
【问题描述】:

![1062 重复条目][2] 在 Magento 的产品创建代码中,我在 /htdocs/magento/app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php 中添加了我自己的自定义代码我已经建立了外部 mysql 连接和使用用于在自定义表中插入产品 id 和 sku。(我知道这不是推荐的方式,但只是为了测试目的,我这样做。)

我的代码-:

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]:违反完整性约束:1062 键“IDX_STOCK_PRODUCT”的重复条目“1949-1”

谁能帮我解决这个问题...

我尝试过的解决方案-:

-删除 /var/cache & /var/session

-清除浏览器缓存和cookies

-在app/etc/config.xml中,改变这个

设置名称 utf8 到这个

设置名称 utf8;设置 FOREIGN_KEY_CHECKS=0; SET UNIQUE_CHECKS=0;

仍然出现同样的错误...或者请告诉我应该在我的代码中更改什么?

P.S.- 我知道这是不推荐的方式,因为我正在更改核心文件的代码并且还使用外部连接而不是使用 ZEND 连接...但这仅用于测试目的...

这个问题有解决办法吗?

请帮帮我...

【问题讨论】:

    标签: magento constraints product mysql-error-1062 duplicates


    【解决方案1】:

    错误很清楚您的问题是什么: 您有一个唯一的键约束 IDX_STOCK_PRODUCT,并且在该键覆盖的任何列中都已经有一条值为“1949-1”的记录。

    【讨论】:

    • 请给我一些解决方案...我该怎么办?
    • 我不是这么说的。您显然是在插入重复记录,请确保您没有插入重复记录。
    • 嗨,马克,看看如果我注释掉我的代码..我仍然收到同样的错误...:(
    • 这听起来像你这样做的方式,你在你的股票项目表中插入额外的记录。我有一种感觉,为了获得任何有意义的答案,您必须更深入地了解您在自定义连接中所做的事情。
    猜你喜欢
    • 2015-03-31
    • 2016-05-23
    • 2017-08-04
    • 2018-06-06
    • 1970-01-01
    • 2016-01-16
    • 2013-09-28
    • 2014-09-16
    • 2020-12-20
    相关资源
    最近更新 更多