Magento Cronjob导入:“数据结构错误:实体代码混合”

时间:2014-10-09 12:32:33

标签: magento import cron magento-1.7

我建立了一个cronjob来自动将产品一夜之间导入我的Magento 1.7.0.2商店。

我的导入工作得很好,如果可配置文章已经存在,只是可配置文章及其选项之间的连接没有正确更新。

所以我在脚本中添加了一些代码,这些代码会在导入之前删除要导入的文章。

突然发生以下错误:

exception 'Mage_Core_Exception' with message 'Error in data structure: entity codes are mixed' in /var/www/vhosts/my-domain.de/httpdocs/app/Mage.php:594
Stack trace:
#0 /var/www/vhosts/my-domain.de/httpdocs/app/code/core/Mage/ImportExport/Model/Resource/Import/Data.php(119): Mage::throwException('Error in data s...')
#1 /var/www/vhosts/my-domain.de/httpdocs/app/code/core/Mage/ImportExport/Model/Import.php(326): Mage_ImportExport_Model_Resource_Import_Data->getEntityTypeCode()
#2 /var/www/vhosts/my-domain.de/httpdocs/app/code/local/Webda/Import/Model/Observer.php(88): Mage_ImportExport_Model_Import->importSource()
#3 [internal function]: Webda_Import_Model_Observer->doImport(Object(Aoe_Scheduler_Model_Schedule))
#4 /var/www/vhosts/my-domain.de/httpdocs/app/code/community/Aoe/Scheduler/Model/Observer.php(79): call_user_func_array(Array, Array)
#5 /var/www/vhosts/my-domain.de/httpdocs/app/code/core/Mage/Core/Model/App.php(1338): Aoe_Scheduler_Model_Observer->dispatch(Object(Varien_Event_Observer))
#6 /var/www/vhosts/my-domain.de/httpdocs/app/code/core/Mage/Core/Model/App.php(1317): Mage_Core_Model_App->_callObserverMethod(Object(Aoe_Scheduler_Model_Observer), 'dispatch', Object(Varien_Event_Observer))
#7 /var/www/vhosts/my-domain.de/httpdocs/app/Mage.php(447): Mage_Core_Model_App->dispatchEvent('default', Array)
#8 /var/www/vhosts/my-domain.de/httpdocs/cron.php(46): Mage::dispatchEvent('default')
#9 {main}

所以,当然,我确实撤消了所有最新的更改,但错误仍然存​​在。

Funfact: 如果我在AOE Scheduler中启动cronjob,它可以正常工作,无论是否有我的最新更改。

所以我可以肯定地说,实施不是问题。

我检查了表格" importexport_importdata",它是空的。

我确实删除了几次缓存。

3 个答案:

答案 0 :(得分:0)

  

这似乎有点老问题,但万一其他人面对这个我分享我的经验。

消息Error in data structure: behaviors are mixed来自班级

Mage_ImportExport_Model_Resource_Import_Data

它与表importexport_importdata中的数据有关。

Magento在导入过程中将数据存储在此表中。

有时,当导入过程失败或被用户停止时,此表中的数据将被破坏。

解决方案:

就像删除importexport_importdata表中的所有记录一样简单,然后尝试再次执行导入过程。

答案 1 :(得分:0)

我已经看到在您有与不同数据库的READ / WRITE拆分连接的环境中出现此错误。我也在AWS Aurora上看过它。如果您回到default_setup

,错误就会消失

此处也有报道:https://github.com/avstudnitz/AvS_FastSimpleImport/issues/29

答案 2 :(得分:0)

更新M2

在调用\ Magento \ ImportExport \ Model \ ResourceModel \ Import \ Data :: getUniqueColumnData时会发生这种情况。该函数期望返回单个值。如果有多个值,则会出错。

这主要是由作业中断时importexport_importdata中的剩余数据引起的。该表只是在处理作业时临时保存数据。因此,如果您不执行导入操作,则可以仅假设数据剩余。这主要是由第三方导入模块引起的,而不是默认的magento。

   /**
     * Return request data from import data table
     *
     * @param string $code parameter name
     * @return string
     * @throws \Magento\Framework\Exception\LocalizedException
     */
    public function getUniqueColumnData($code)
    {
        $connection = $this->getConnection();
        $values = array_unique($connection->fetchCol($connection->select()->from($this->getMainTable(), [$code])));

        if (count($values) != 1) {
            throw new \Magento\Framework\Exception\LocalizedException(
                __('Error in data structure: %1 values are mixed', $code)
            );
        }
        return $values[0];
    }